From e14ceedadcd1c760335c6d52516f8d2a0e3d9d5e Mon Sep 17 00:00:00 2001 From: lewis <747342561@qq.com> Date: Thu, 8 Apr 2021 11:37:48 +0800 Subject: [PATCH] mod upload file_name --- modules/storage/obs.go | 14 +++++++------- routers/repo/attachment.go | 14 ++++++++------ web_src/js/components/ObsUploader.vue | 2 ++ 3 files changed, 17 insertions(+), 13 deletions(-) diff --git a/modules/storage/obs.go b/modules/storage/obs.go index 4e364fe9c..de29df177 100755 --- a/modules/storage/obs.go +++ b/modules/storage/obs.go @@ -57,10 +57,10 @@ func GetObsPartInfos(uuid string, uploadID string) (string, error) { return chunks, nil } -func NewObsMultiPartUpload(uuid string) (string, error) { +func NewObsMultiPartUpload(uuid, fileName string) (string, error) { input := &obs.InitiateMultipartUploadInput{} input.Bucket = setting.Bucket - input.Key = strings.TrimPrefix(path.Join(setting.BasePath, path.Join(uuid[0:1], uuid[1:2], uuid, uuid)), "/") + input.Key = strings.TrimPrefix(path.Join(setting.BasePath, path.Join(uuid[0:1], uuid[1:2], uuid, fileName)), "/") output, err := ObsCli.InitiateMultipartUpload(input) if err != nil { @@ -71,10 +71,10 @@ func NewObsMultiPartUpload(uuid string) (string, error) { return output.UploadId, nil } -func CompleteObsMultiPartUpload(uuid string, uploadID string) error { +func CompleteObsMultiPartUpload(uuid, uploadID, fileName string) error { input := &obs.CompleteMultipartUploadInput{} input.Bucket = setting.Bucket - input.Key = strings.TrimPrefix(path.Join(setting.BasePath, path.Join(uuid[0:1], uuid[1:2], uuid, uuid)), "/") + input.Key = strings.TrimPrefix(path.Join(setting.BasePath, path.Join(uuid[0:1], uuid[1:2], uuid, fileName)), "/") input.UploadId = uploadID output, err := ObsCli.ListParts(&obs.ListPartsInput{ Bucket: setting.Bucket, @@ -102,11 +102,11 @@ func CompleteObsMultiPartUpload(uuid string, uploadID string) error { return nil } -func ObsGenMultiPartSignedUrl(uuid string, uploadId string, partNumber int, partSize int64) (string, error) { +func ObsGenMultiPartSignedUrl(uuid string, uploadId string, partNumber int, fileName string) (string, error) { input := &obs.CreateSignedUrlInput{} input.Bucket = setting.Bucket - input.Key = strings.TrimPrefix(path.Join(setting.BasePath, path.Join(uuid[0:1], uuid[1:2], uuid, uuid)), "/") + input.Key = strings.TrimPrefix(path.Join(setting.BasePath, path.Join(uuid[0:1], uuid[1:2], uuid, fileName)), "/") input.Expires = 60 * 60 input.Method = obs.HttpMethodPut @@ -128,7 +128,7 @@ func ObsGenMultiPartSignedUrl(uuid string, uploadId string, partNumber int, part func ObsGetPreSignedUrl(uuid, fileName string) (string, error) { input := &obs.CreateSignedUrlInput{} input.Method = obs.HttpMethodGet - input.Key = strings.TrimPrefix(path.Join(setting.BasePath, path.Join(uuid[0:1], uuid[1:2], uuid, uuid)), "/") + input.Key = strings.TrimPrefix(path.Join(setting.BasePath, path.Join(uuid[0:1], uuid[1:2], uuid, fileName)), "/") input.Bucket = setting.Bucket input.Expires = 60 * 60 diff --git a/routers/repo/attachment.go b/routers/repo/attachment.go index cab123d30..b859e9f43 100755 --- a/routers/repo/attachment.go +++ b/routers/repo/attachment.go @@ -218,8 +218,6 @@ func GetAttachment(ctx *context.Context) { } } - log.Info(url) - if err = increaseDownloadCount(attach, dataSet); err != nil { ctx.ServerError("Update", err) return @@ -526,6 +524,8 @@ func NewMultipart(ctx *context.Context) { return } + fileName := ctx.Query("file_name") + if setting.Attachment.StoreType == storage.MinioStorageType { totalChunkCounts := ctx.QueryInt("totalChunkCounts") if totalChunkCounts > minio_ext.MaxPartsCount { @@ -548,7 +548,7 @@ func NewMultipart(ctx *context.Context) { return } } else { - uploadID, err = storage.NewObsMultiPartUpload(uuid) + uploadID, err = storage.NewObsMultiPartUpload(uuid, fileName) if err != nil { ctx.ServerError("NewObsMultiPartUpload", err) return @@ -585,6 +585,7 @@ func GetMultipartUploadUrl(ctx *context.Context) { uploadID := ctx.Query("uploadID") partNumber := ctx.QueryInt("chunkNumber") size := ctx.QueryInt64("size") + fileName := ctx.Query("file_name") typeCloudBrain := ctx.QueryInt("type") err := checkTypeCloudBrain(typeCloudBrain) @@ -606,7 +607,7 @@ func GetMultipartUploadUrl(ctx *context.Context) { return } } else { - url, err = storage.ObsGenMultiPartSignedUrl(uuid, uploadID, partNumber, size) + url, err = storage.ObsGenMultiPartSignedUrl(uuid, uploadID, partNumber, fileName) if err != nil { ctx.Error(500, fmt.Sprintf("ObsGenMultiPartSignedUrl failed: %v", err)) return @@ -636,6 +637,7 @@ func CompleteMultipart(ctx *context.Context) { uuid := ctx.Query("uuid") uploadID := ctx.Query("uploadID") typeCloudBrain := ctx.QueryInt("type") + fileName := ctx.Query("file_name") err := checkTypeCloudBrain(typeCloudBrain) if err != nil { @@ -660,7 +662,7 @@ func CompleteMultipart(ctx *context.Context) { return } } else { - err = storage.CompleteObsMultiPartUpload(uuid, uploadID) + err = storage.CompleteObsMultiPartUpload(uuid, uploadID, fileName) if err != nil { ctx.Error(500, fmt.Sprintf("CompleteObsMultiPartUpload failed: %v", err)) return @@ -679,7 +681,7 @@ func CompleteMultipart(ctx *context.Context) { UUID: uuid, UploaderID: ctx.User.ID, IsPrivate: true, - Name: ctx.Query("file_name"), + Name: fileName, Size: ctx.QueryInt64("size"), DatasetID: ctx.QueryInt64("dataset_id"), Type: typeCloudBrain, diff --git a/web_src/js/components/ObsUploader.vue b/web_src/js/components/ObsUploader.vue index 16b53d343..1fac145f4 100755 --- a/web_src/js/components/ObsUploader.vue +++ b/web_src/js/components/ObsUploader.vue @@ -287,6 +287,7 @@ export default { size: file.size, fileType: file.type, type: CloudBrainType, + file_name: file.name, _csrf: csrf } }); @@ -328,6 +329,7 @@ export default { size: partSize, chunkNumber: currentChunk + 1, type: CloudBrainType, + file_name: file.name, _csrf: csrf } });