You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
46 lines
1.1 KiB
46 lines
1.1 KiB
package http |
|
|
|
import ( |
|
"fmt" |
|
"io/ioutil" |
|
"net/http" |
|
"time" |
|
|
|
"go-common/library/ecode" |
|
"go-common/library/log" |
|
bm "go-common/library/net/http/blademaster" |
|
) |
|
|
|
func upload(c *bm.Context) { |
|
file, _, err := c.Request.FormFile("file") |
|
if err != nil { |
|
log.Error("FormFile err(%v)", err) |
|
httpCode(c, fmt.Sprintf("File Upload FormFile Error:(%v)", err), ecode.RequestErr) |
|
return |
|
} |
|
defer file.Close() |
|
content, err := ioutil.ReadAll(file) |
|
if err != nil { |
|
log.Error(" uploadFile.ReadAll error(%v)", err) |
|
httpCode(c, fmt.Sprintf("File ioutil.ReadAll Error:(%v)", err), ecode.RequestErr) |
|
return |
|
} |
|
filetype := http.DetectContentType(content) |
|
switch filetype { |
|
case "image/jpeg", "image/jpg": |
|
case "image/gif": |
|
case "image/png": |
|
case "application/zip": |
|
default: |
|
httpCode(c, fmt.Sprintf("not allow filetype(%s)", filetype), ecode.RequestErr) |
|
log.Warn("not allow filetype(%s) ", filetype) |
|
return |
|
} |
|
local, err := svc.Upload(c, "", filetype, time.Now().Unix(), content) |
|
if err != nil { |
|
log.Error("svc.Upload error(%v)", err) |
|
httpCode(c, fmt.Sprintf("svc.Upload error:(%v)", err), ecode.RequestErr) |
|
return |
|
} |
|
c.JSON(local, nil) |
|
}
|
|
|