diff --git a/modules/storage/obs.go b/modules/storage/obs.go index 9137d5c1d..f7f91dcd2 100755 --- a/modules/storage/obs.go +++ b/modules/storage/obs.go @@ -290,24 +290,27 @@ func GetAllObsListObjectUnderDir(bucket string, prefix string) ([]FileInfo, erro if err == nil { for _, val := range output.Contents { var isDir bool + var fileName, parentDir string if val.Key == prefix { continue } - log.Info("sub str=" + val.Key[prefixLen:len(val.Key)-1]) if strings.Contains(val.Key[prefixLen:len(val.Key)-1], "/") { continue } if strings.HasSuffix(val.Key, "/") { isDir = true + fileName = val.Key[prefixLen : len(val.Key)-1] + parentDir = val.Key[prefixLen:] } else { isDir = false + fileName = val.Key[prefixLen:] } fileInfo := FileInfo{ ModTime: val.LastModified.Format("2006-01-02 15:04:05"), - FileName: val.Key[prefixLen:], + FileName: fileName, Size: val.Size, IsDir: isDir, - ParenDir: "", + ParenDir: parentDir, } fileInfos = append(fileInfos, fileInfo) } diff --git a/routers/repo/ai_model_manage.go b/routers/repo/ai_model_manage.go index 949c33bb3..eafd98e85 100644 --- a/routers/repo/ai_model_manage.go +++ b/routers/repo/ai_model_manage.go @@ -202,8 +202,11 @@ func DownloadMultiModelFile(ctx *context.Context) { func DownloadSingleModelFile(ctx *context.Context) { log.Info("DownloadSingleModelFile start.") - path := ctx.Query("path") - url, err := storage.GetObsCreateSignedUrlByBucketAndKey(setting.Bucket, path[len(setting.Bucket)+1:]) + id := ctx.Params(":ID") + parentDir := ctx.Query("parentDir") + fileName := ctx.Query("fileName") + path := Model_prefix + models.AttachmentRelativePath(id) + "/" + parentDir + fileName + url, err := storage.GetObsCreateSignedUrlByBucketAndKey(setting.Bucket, path) if err != nil { log.Error("GetObsCreateSignedUrl failed: %v", err.Error(), ctx.Data["msgID"]) ctx.ServerError("GetObsCreateSignedUrl", err) @@ -214,7 +217,7 @@ func DownloadSingleModelFile(ctx *context.Context) { func ShowSingleModel(ctx *context.Context) { id := ctx.Params(":ID") - //parentDir := ctx.Query("parentDir") + parentDir := ctx.Query("parentDir") log.Info("Show single ModelInfo start.id=" + id) task, err := models.QueryModelById(id) if err != nil { @@ -222,8 +225,8 @@ func ShowSingleModel(ctx *context.Context) { ctx.ServerError("no such model:", err) return } - log.Info("bucket=" + setting.Bucket + " key=" + task.Path[len(setting.Bucket)+1:]) - models, err := storage.GetAllObsListObjectUnderDir(setting.Bucket, task.Path[len(setting.Bucket)+1:]) + log.Info("bucket=" + setting.Bucket + " key=" + task.Path[len(setting.Bucket)+1:] + parentDir) + models, err := storage.GetAllObsListObjectUnderDir(setting.Bucket, task.Path[len(setting.Bucket)+1:]+parentDir) if err != nil { log.Info("get model list failed:", err) ctx.ServerError("GetObsListObject:", err) diff --git a/routers/routes/routes.go b/routers/routes/routes.go index 8c37395a0..aaa2bd6a8 100755 --- a/routers/routes/routes.go +++ b/routers/routes/routes.go @@ -964,6 +964,7 @@ func RegisterRoutes(m *macaron.Macaron) { m.Get("", reqRepoCloudBrainReader, repo.ShowModelPageInfo) m.Group("/:ID", func() { m.Get("", reqRepoCloudBrainReader, repo.ShowSingleModel) + m.Get("/downloadsingle", reqRepoCloudBrainReader, repo.DownloadSingleModelFile) }) }, context.RepoRef()) diff --git a/templates/repo/modelmanage/download.tmpl b/templates/repo/modelmanage/download.tmpl index 235529859..72e30c1ee 100644 --- a/templates/repo/modelmanage/download.tmpl +++ b/templates/repo/modelmanage/download.tmpl @@ -27,7 +27,7 @@