diff --git a/routers/repo/attachment.go b/routers/repo/attachment.go index 03c2e845e..f45b5c935 100755 --- a/routers/repo/attachment.go +++ b/routers/repo/attachment.go @@ -312,7 +312,8 @@ func GetAttachment(ctx *context.Context) { url = setting.PROXYURL + "/obs_proxy_download?uuid=" + attach.UUID + "&file_name=" + attach.Name log.Info("return url=" + url) } else { - url, err = storage.ObsGetPreSignedUrl(attach.UUID, attach.Name) + objectName := strings.TrimPrefix(path.Join(setting.BasePath, path.Join(attach.UUID[0:1], attach.UUID[1:2], attach.UUID, attach.Name)), "/") + url, err = storage.ObsGetPreSignedUrl(objectName, attach.Name) if err != nil { ctx.ServerError("ObsGetPreSignedUrl", err) return @@ -684,9 +685,9 @@ func GetSuccessChunks(ctx *context.Context) { } } -func getMinioInitObjectName(scene string, uuid string, filename string) string { +func getMinioInitObjectName(scene string, uuid, modeluuid string, filename string) string { if scene == Attachment_model { - return strings.TrimPrefix(path.Join(Model_prefix, path.Join(uuid[0:1], uuid[1:2], uuid, filename)), "/") + return strings.TrimPrefix(path.Join(Model_prefix, path.Join(modeluuid[0:1], modeluuid[1:2], modeluuid, filename)), "/") } else { return strings.TrimPrefix(path.Join(setting.Attachment.Minio.BasePath, path.Join(uuid[0:1], uuid[1:2], uuid)), "/") } @@ -700,9 +701,9 @@ func getChunkMinioExistObjectName(scene string, fileChunk *models.FileChunk, fil } } -func getOBSInitObjectName(scene string, uuid string, filename string) string { +func getOBSInitObjectName(scene string, uuid, modeluuid string, filename string) string { if scene == Attachment_model { - return strings.TrimPrefix(path.Join(Model_prefix, path.Join(uuid[0:1], uuid[1:2], uuid, filename)), "/") + return strings.TrimPrefix(path.Join(Model_prefix, path.Join(modeluuid[0:1], modeluuid[1:2], modeluuid, filename)), "/") } else { return strings.TrimPrefix(path.Join(setting.BasePath, path.Join(uuid[0:1], uuid[1:2], uuid, filename)), "/") } @@ -752,20 +753,21 @@ func NewMultipart(ctx *context.Context) { } uuid := gouuid.NewV4().String() + modeluuid := "" if scene == Attachment_model { - uuid = ctx.Query("uuid") + modeluuid = ctx.Query("modeluuid") } var uploadID string var objectName string if typeCloudBrain == models.TypeCloudBrainOne { - objectName = getMinioInitObjectName(scene, uuid, fileName) + objectName = getMinioInitObjectName(scene, uuid, modeluuid, fileName) uploadID, err = storage.NewMultiPartUpload(objectName) if err != nil { ctx.ServerError("NewMultipart", err) return } } else { - objectName = getOBSInitObjectName(scene, uuid, fileName) + objectName = getOBSInitObjectName(scene, uuid, modeluuid, fileName) uploadID, err = storage.NewObsMultiPartUpload(objectName) if err != nil { ctx.ServerError("NewObsMultiPartUpload", err) @@ -811,8 +813,8 @@ func PutOBSProxyUpload(ctx *context.Context) { ctx.Error(500, fmt.Sprintf("FormFile: %v", RequestBody)) return } - - err := storage.ObsMultiPartUpload(uuid, uploadID, partNumber, fileName, RequestBody.ReadCloser()) + objectName := strings.TrimPrefix(path.Join(setting.BasePath, path.Join(uuid[0:1], uuid[1:2], uuid, fileName)), "/") + err := storage.ObsMultiPartUpload(objectName, uploadID, partNumber, fileName, RequestBody.ReadCloser()) if err != nil { log.Info("upload error.") } @@ -821,8 +823,8 @@ func PutOBSProxyUpload(ctx *context.Context) { func GetOBSProxyDownload(ctx *context.Context) { uuid := ctx.Query("uuid") fileName := ctx.Query("file_name") - - body, err := storage.ObsDownload(uuid, fileName) + objectName := strings.TrimPrefix(path.Join(setting.BasePath, path.Join(uuid[0:1], uuid[1:2], uuid, fileName)), "/") + body, err := storage.ObsDownloadAFile(setting.Bucket, objectName) if err != nil { log.Info("upload error.") } else {