From df77d0cb57962345aa07f9773fe9f00f52fa7e77 Mon Sep 17 00:00:00 2001 From: yuyuanshifu <747342561@qq.com> Date: Thu, 4 Mar 2021 16:35:31 +0800 Subject: [PATCH] mod obs upload --- modules/storage/obs.go | 50 +- routers/repo/attachment.go | 32 -- routers/routes/routes.go | 1 - .../js/components/MinioUploader.vue.opendata | 487 ++++++++++++++++++ web_src/js/components/ObsUploader.vue | 1 - 5 files changed, 497 insertions(+), 74 deletions(-) create mode 100755 web_src/js/components/MinioUploader.vue.opendata diff --git a/modules/storage/obs.go b/modules/storage/obs.go index d174b8fba..4e364fe9c 100755 --- a/modules/storage/obs.go +++ b/modules/storage/obs.go @@ -5,7 +5,7 @@ package storage import ( - "io" + "github.com/unknwon/com" "path" "strconv" "strings" @@ -102,57 +102,27 @@ func CompleteObsMultiPartUpload(uuid string, uploadID string) error { return nil } -func ObsUploadPart(uuid string, uploadId string, partNumber int, partSize int64, body io.Reader) (string, error) { - input := &obs.UploadPartInput{} - input.PartNumber = partNumber - input.Key = strings.TrimPrefix(path.Join(setting.BasePath, path.Join(uuid[0:1], uuid[1:2], uuid, uuid)), "/") - input.UploadId = uploadId - input.Bucket = setting.Bucket - input.PartSize = partSize - input.Body = body - output, err := ObsCli.UploadPart(input) - if err != nil { - log.Error("UploadPart failed:", err.Error()) - return "", err - } - - return output.ETag, nil -} - func ObsGenMultiPartSignedUrl(uuid string, uploadId string, partNumber int, partSize int64) (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)), "/") - input.Expires = int(PresignedUploadPartUrlExpireTime) - input.Method = obs.HTTP_PUT + input.Key = strings.TrimPrefix(path.Join(setting.BasePath, path.Join(uuid[0:1], uuid[1:2], uuid, uuid)), "/") + input.Expires = 60 * 60 + input.Method = obs.HttpMethodPut input.QueryParams = map[string]string{ - "Bucket": input.Bucket, - "Key": input.Key, - "PartNumber": com.ToStr(partNumber,10), - "UploadId": uploadId, - "PartSize": com.ToStr(partSize,10), + "partNumber": com.ToStr(partNumber,10), + "uploadId": uploadId, + //"partSize": com.ToStr(partSize,10), } - input.Headers = map[string]string{ - - } - - */ - - Key := strings.TrimPrefix(path.Join(setting.BasePath, path.Join(uuid[0:1], uuid[1:2], uuid, uuid)), "/") - req, err := ObsCli.CreateUploadPartSignedUrl(setting.Bucket, Key, uploadId, partNumber, partSize) + output, err := ObsCli.CreateSignedUrl(input) if err != nil { log.Error("CreateSignedUrl failed:", err.Error()) return "", err } - log.Info(req.URL.String()) - log.Info("", req.Header) - - return req.URL.String(), nil - + return output.SignedUrl, nil } func ObsGetPreSignedUrl(uuid, fileName string) (string, error) { diff --git a/routers/repo/attachment.go b/routers/repo/attachment.go index 6874a1eda..62bdc2ea7 100755 --- a/routers/repo/attachment.go +++ b/routers/repo/attachment.go @@ -633,38 +633,6 @@ func GetObsKey(ctx *context.Context) { }) } -func UploadPart(ctx *context.Context) { - tmp, err := ctx.Req.Body().String() - log.Info(tmp) - - err = ctx.Req.ParseMultipartForm(100*1024*1024) - if err != nil { - ctx.Error(http.StatusBadRequest, fmt.Sprintf("ParseMultipartForm failed: %v", err)) - return - } - - file, fileHeader, err := ctx.Req.FormFile("file") - log.Info(ctx.Req.Form.Get("file")) - if err != nil { - ctx.Error(http.StatusBadRequest, fmt.Sprintf("FormFile failed: %v", err)) - return - } - - - - log.Info(fileHeader.Filename) - - etag, err := storage.ObsUploadPart("", "", 1, 1, file) - if err != nil { - ctx.Error(500, fmt.Sprintf("ObsUploadPart failed: %v", err)) - return - } - - ctx.JSON(200, map[string]string{ - "etag": etag, - }) -} - func CompleteMultipart(ctx *context.Context) { uuid := ctx.Query("uuid") uploadID := ctx.Query("uploadID") diff --git a/routers/routes/routes.go b/routers/routes/routes.go index 312707314..adc8938a9 100755 --- a/routers/routes/routes.go +++ b/routers/routes/routes.go @@ -529,7 +529,6 @@ func RegisterRoutes(m *macaron.Macaron) { m.Get("/get_multipart_url", repo.GetMultipartUploadUrl) m.Post("/complete_multipart", repo.CompleteMultipart) m.Post("/update_chunk", repo.UpdateMultipart) - m.Post("/upload_part", repo.UploadPart) m.Get("/get_obs_key", repo.GetObsKey) }, reqSignIn) diff --git a/web_src/js/components/MinioUploader.vue.opendata b/web_src/js/components/MinioUploader.vue.opendata new file mode 100755 index 000000000..1775fd02b --- /dev/null +++ b/web_src/js/components/MinioUploader.vue.opendata @@ -0,0 +1,487 @@ + + + + + \ No newline at end of file diff --git a/web_src/js/components/ObsUploader.vue b/web_src/js/components/ObsUploader.vue index 1ff118d94..0e9e7d2eb 100755 --- a/web_src/js/components/ObsUploader.vue +++ b/web_src/js/components/ObsUploader.vue @@ -152,7 +152,6 @@ export default { // 断点续传 do_multi_uploader(file){ - //var file = evt.target.files[0] const result = this.get_result() const upload_datasetId = document .getElementById('datasetId')