feat: 添加下载文件到浏览器功能
This commit is contained in:
@@ -3,6 +3,7 @@ package service
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"net/url"
|
||||
"oss/consts"
|
||||
"oss/dao"
|
||||
"oss/minio"
|
||||
@@ -10,6 +11,7 @@ import (
|
||||
"oss/model/entity"
|
||||
"time"
|
||||
|
||||
"github.com/gogf/gf/v2/net/ghttp"
|
||||
"github.com/gogf/gf/v2/os/glog"
|
||||
|
||||
"gitea.com/red-future/common/utils"
|
||||
@@ -27,6 +29,23 @@ func (f *file) DownloadToFile(ctx context.Context, req *dto.DownloadToFileReq) (
|
||||
return minio.DownloadToFile(ctx, req.FileURL, req.LocalPath)
|
||||
}
|
||||
|
||||
// DownloadToBrowser 下载文件到浏览器
|
||||
func (f *file) DownloadToBrowser(ctx context.Context, req *dto.DownloadToBrowserReq) (err error) {
|
||||
fileBytes, fileName, contentType, err := minio.DownloadToBrowser(ctx, req.FileURL)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
r := ghttp.RequestFromCtx(ctx)
|
||||
// 设置响应头
|
||||
r.Response.Header().Set("Content-Type", contentType)
|
||||
r.Response.Header().Set("Content-Disposition", fmt.Sprintf(`attachment; filename="%s"; filename*=UTF-8''%s`, fileName, url.PathEscape(fileName)))
|
||||
r.Response.Header().Set("Content-Length", fmt.Sprintf("%d", len(fileBytes)))
|
||||
// 写出二进制流
|
||||
r.Response.Write(fileBytes)
|
||||
return
|
||||
}
|
||||
|
||||
func (f *file) UploadFile(ctx context.Context, req *dto.UploadFileReq) (res *dto.UploadFileRes, err error) {
|
||||
fileSize := gconv.Int(req.File.Size)
|
||||
totalFileSize := 0
|
||||
|
||||
Reference in New Issue
Block a user