|
|
@@ -262,10 +262,15 @@ func GetAttachment(ctx *context.Context) { |
|
|
|
return |
|
|
|
} |
|
|
|
} else { |
|
|
|
url, err = storage.ObsGetPreSignedUrl(attach.UUID, attach.Name) |
|
|
|
if err != nil { |
|
|
|
ctx.ServerError("ObsGetPreSignedUrl", err) |
|
|
|
return |
|
|
|
if setting.PROXYURL != "" { |
|
|
|
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) |
|
|
|
if err != nil { |
|
|
|
ctx.ServerError("ObsGetPreSignedUrl", err) |
|
|
|
return |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
@@ -273,7 +278,6 @@ func GetAttachment(ctx *context.Context) { |
|
|
|
ctx.ServerError("Update", err) |
|
|
|
return |
|
|
|
} |
|
|
|
|
|
|
|
http.Redirect(ctx.Resp, ctx.Req.Request, url, http.StatusMovedPermanently) |
|
|
|
} else { |
|
|
|
fr, err := storage.Attachments.Open(attach.RelativePath()) |
|
|
@@ -282,7 +286,7 @@ func GetAttachment(ctx *context.Context) { |
|
|
|
return |
|
|
|
} |
|
|
|
defer fr.Close() |
|
|
|
|
|
|
|
log.Info("go here to download.") |
|
|
|
if err = increaseDownloadCount(attach, dataSet); err != nil { |
|
|
|
ctx.ServerError("Update", err) |
|
|
|
return |
|
|
@@ -680,6 +684,34 @@ 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) |
|
|
|
if err != nil { |
|
|
|
log.Info("upload error.") |
|
|
|
} else { |
|
|
|
defer body.Close() |
|
|
|
ctx.Resp.Header().Set("Content-Disposition", "attachment; filename="+fileName) |
|
|
|
ctx.Resp.Header().Set("Content-Type", "application/octet-stream") |
|
|
|
p := make([]byte, 1024) |
|
|
|
var readErr error |
|
|
|
var readCount int |
|
|
|
// 读取对象内容 |
|
|
|
for { |
|
|
|
readCount, readErr = body.Read(p) |
|
|
|
if readCount > 0 { |
|
|
|
ctx.Resp.Write(p[:readCount]) |
|
|
|
//fmt.Printf("%s", p[:readCount]) |
|
|
|
} |
|
|
|
if readErr != nil { |
|
|
|
break |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
func GetMultipartUploadUrl(ctx *context.Context) { |
|
|
|
uuid := ctx.Query("uuid") |
|
|
|
uploadID := ctx.Query("uploadID") |
|
|
@@ -708,7 +740,7 @@ func GetMultipartUploadUrl(ctx *context.Context) { |
|
|
|
} |
|
|
|
} else { |
|
|
|
if setting.PROXYURL != "" { |
|
|
|
url = setting.PROXYURL + "?uuid=" + uuid + "&uploadId=" + uploadID + "&partNumber=" + fmt.Sprint(partNumber) + "&file_name=" + fileName |
|
|
|
url = setting.PROXYURL + "/obs_proxy_multipart?uuid=" + uuid + "&uploadId=" + uploadID + "&partNumber=" + fmt.Sprint(partNumber) + "&file_name=" + fileName |
|
|
|
log.Info("return url=" + url) |
|
|
|
} else { |
|
|
|
url, err = storage.ObsGenMultiPartSignedUrl(uuid, uploadID, partNumber, fileName) |
|
|
|