feat: 添加下载文件到浏览器功能

This commit is contained in:
2026-04-22 12:49:27 +08:00
parent 98f0082d44
commit 3055b15855
4 changed files with 74 additions and 0 deletions

View File

@@ -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