作者 yangfu

oss上传直接使用文件名

@@ -22,7 +22,7 @@ type BuckObject struct { @@ -22,7 +22,7 @@ type BuckObject struct {
22 } 22 }
23 23
24 // 创建视频上传凭证 24 // 创建视频上传凭证
25 -func CreateOssUpload(header *protocol.RequestHeader, MultipartForm *multipart.Form) (rsp interface{}, err error) { 25 +func CreateOssUpload(header *protocol.RequestHeader, MultipartForm *multipart.Form, disableRename bool) (rsp interface{}, err error) {
26 var objects []aliyun.Object 26 var objects []aliyun.Object
27 var listPath []BuckObject 27 var listPath []BuckObject
28 var bucket *oss.Bucket 28 var bucket *oss.Bucket
@@ -42,7 +42,7 @@ func CreateOssUpload(header *protocol.RequestHeader, MultipartForm *multipart.Fo @@ -42,7 +42,7 @@ func CreateOssUpload(header *protocol.RequestHeader, MultipartForm *multipart.Fo
42 f.Close() 42 f.Close()
43 reader := bytes.NewBuffer(data) 43 reader := bytes.NewBuffer(data)
44 fileBase := filepath.Base(v[i].Filename) 44 fileBase := filepath.Base(v[i].Filename)
45 - key := utils.GetFileName(header.AppProject, aliyun.FileObject, fileBase) 45 + key := utils.GetFileName(header.AppProject, aliyun.FileObject, fileBase, disableRename)
46 objects = append(objects, aliyun.Object{ 46 objects = append(objects, aliyun.Object{
47 Key: key, 47 Key: key,
48 Value: reader, 48 Value: reader,
@@ -19,6 +19,8 @@ type RequestHeader struct { @@ -19,6 +19,8 @@ type RequestHeader struct {
19 19
20 requestId string //请求编号 md5 20 requestId string //请求编号 md5
21 reqIndex int64 //请求链序号 21 reqIndex int64 //请求链序号
  22 +
  23 + KeepFileName bool // 保存文件名 (上传)
22 } 24 }
23 25
24 func (reqHead *RequestHeader) SetRequestId(addString ...string) { 26 func (reqHead *RequestHeader) SetRequestId(addString ...string) {
@@ -36,8 +36,9 @@ func IsFile(path string) bool { @@ -36,8 +36,9 @@ func IsFile(path string) bool {
36 return !IsDir(path) 36 return !IsDir(path)
37 } 37 }
38 38
39 -//fileType: video voice image  
40 -func GetFileName(projectName, fileType string, filename string) string { 39 +// fileType: video voice image
  40 +func GetFileName(projectName, fileType string, filename string, args ...interface{}) string {
  41 + var oldFileName = filename
41 date := comm_time.GetTimeByYyyymmdd() 42 date := comm_time.GetTimeByYyyymmdd()
42 subfix := path.Ext(filename) 43 subfix := path.Ext(filename)
43 if len(projectName) == 0 { 44 if len(projectName) == 0 {
@@ -45,6 +46,9 @@ func GetFileName(projectName, fileType string, filename string) string { @@ -45,6 +46,9 @@ func GetFileName(projectName, fileType string, filename string) string {
45 } 46 }
46 prefix := fmt.Sprintf("%v_%v", time.Now().Unix(), common.RandomString(32)) 47 prefix := fmt.Sprintf("%v_%v", time.Now().Unix(), common.RandomString(32))
47 filename = fmt.Sprintf("%v%v", prefix, subfix) 48 filename = fmt.Sprintf("%v%v", prefix, subfix)
  49 + if len(args) > 0 && args[0].(bool) {
  50 + filename = oldFileName
  51 + }
48 sourcePath := fmt.Sprintf("%v/%v/%v/%v/%v", projectName, beego.BConfig.RunMode, date, fileType, filename) 52 sourcePath := fmt.Sprintf("%v/%v/%v/%v/%v", projectName, beego.BConfig.RunMode, date, fileType, filename)
49 return sourcePath 53 return sourcePath
50 } 54 }
@@ -208,7 +208,7 @@ func (this *VodController) PutObject() { @@ -208,7 +208,7 @@ func (this *VodController) PutObject() {
208 }() 208 }()
209 209
210 header := controllers.GetRequestHeader(this.Ctx) 210 header := controllers.GetRequestHeader(this.Ctx)
211 - msg = domain.NewReturnResponse(oss.CreateOssUpload(header, this.Ctx.Request.MultipartForm)) 211 + msg = domain.NewReturnResponse(oss.CreateOssUpload(header, this.Ctx.Request.MultipartForm, false))
212 } 212 }
213 213
214 // STS授权 CreateStsAuth 214 // STS授权 CreateStsAuth
@@ -8,6 +8,7 @@ import ( @@ -8,6 +8,7 @@ import (
8 "openapi/pkg/domain" 8 "openapi/pkg/domain"
9 "openapi/pkg/infrastructure/aliyun" 9 "openapi/pkg/infrastructure/aliyun"
10 "openapi/pkg/port/beego/controllers" 10 "openapi/pkg/port/beego/controllers"
  11 + "strconv"
11 ) 12 )
12 13
13 type VodController struct { 14 type VodController struct {
@@ -206,9 +207,14 @@ func (this *VodController) PutObject() { @@ -206,9 +207,14 @@ func (this *VodController) PutObject() {
206 defer func() { 207 defer func() {
207 this.Resp(msg) 208 this.Resp(msg)
208 }() 209 }()
209 - 210 + var request = struct {
  211 + DisableRename bool `json:"disableRename"` // 禁用重命名
  212 + }{}
  213 + if val := this.Ctx.Input.Query("disableRename"); len(val) > 0 {
  214 + request.DisableRename, _ = strconv.ParseBool(val)
  215 + }
210 header := controllers.GetRequestHeader(this.Ctx) 216 header := controllers.GetRequestHeader(this.Ctx)
211 - msg = domain.NewReturnResponse(oss.CreateOssUpload(header, this.Ctx.Request.MultipartForm)) 217 + msg = domain.NewReturnResponse(oss.CreateOssUpload(header, this.Ctx.Request.MultipartForm, request.DisableRename))
212 } 218 }
213 219
214 // STS授权 CreateStsAuth 220 // STS授权 CreateStsAuth
@@ -18,6 +18,7 @@ func init() { @@ -18,6 +18,7 @@ func init() {
18 ) 18 )
19 beego.SetStaticPath("/log", constant.LogFilePath) 19 beego.SetStaticPath("/log", constant.LogFilePath)
20 beego.Router("/v2/vod/createStsAuth", &v2.VodController{}, "Post:CreateStsAuth") 20 beego.Router("/v2/vod/createStsAuth", &v2.VodController{}, "Post:CreateStsAuth")
  21 + beego.Router("/v2/vod/putObject", &v2.VodController{}, "Post:PutObject")
21 beego.AddNamespace(nsV1) 22 beego.AddNamespace(nsV1)
22 beego.InsertFilter("/*", beego.BeforeRouter, controllers.AllowCors()) 23 beego.InsertFilter("/*", beego.BeforeRouter, controllers.AllowCors())
23 } 24 }