feat: 添加文件下载及字节流上传功能

This commit is contained in:
2026-04-22 08:45:45 +08:00
parent 2181cab5a5
commit 7fa8b6eb7d
4 changed files with 188 additions and 23 deletions

View File

@@ -23,6 +23,10 @@ type file struct{}
// File 存储文件服务
var File = new(file)
func (f *file) DownloadToFile(ctx context.Context, req *dto.DownloadToFileReq) (err error) {
return minio.DownloadToFile(ctx, req.FileURL, req.LocalPath)
}
func (f *file) UploadFile(ctx context.Context, req *dto.UploadFileReq) (res *dto.UploadFileRes, err error) {
fileSize := gconv.Int(req.File.Size)
totalFileSize := 0
@@ -99,7 +103,8 @@ func (f *file) UploadFile(ctx context.Context, req *dto.UploadFileReq) (res *dto
return nil, gerror.New("存储服务内存不足")
}
// 上传图片
fileURL, fileName, fileFormat, err := minio.UploadFile(ctx, req.File)
var fileURL, fileName, fileFormat string
fileURL, fileName, fileFormat, err = minio.UploadFile(ctx, req.File)
if err != nil {
glog.Errorf(ctx, "上传图片失败: %v", err)
return nil, err
@@ -127,3 +132,40 @@ func (f *file) UploadFile(ctx context.Context, req *dto.UploadFileReq) (res *dto
res.FileAddressPrefix = url
return
}
// UploadFileBytes 上传文件(字节流)
func (f *file) UploadFileBytes(ctx context.Context, req *dto.UploadFileBytesReq) (res *dto.UploadFileRes, err error) {
// 获取用户信息
user, err := utils.GetUserInfo(ctx)
if err != nil {
glog.Errorf(ctx, "获取用户信息失败: %v", err)
return
}
tenantId := user.TenantId
// 上传到 MinIO
fileURL, fileFormat, err := minio.UploadFileBytes(ctx, req.FileName, req.FileBytes, req.FileStoreURL)
if err != nil {
glog.Errorf(ctx, "上传文件失败: %v", err)
return nil, err
}
// 插入数据库记录
ossEntity := &dto.UploadFile{
TenantId: tenantId,
FileURL: fileURL,
FileSize: len(req.FileBytes),
}
if _, err = dao.File.Insert(ctx, ossEntity); err != nil {
return nil, err
}
res = &dto.UploadFileRes{
FileURL: fileURL,
FileSize: len(req.FileBytes),
FileName: req.FileName,
FileFormat: fileFormat,
}
res.FileAddressPrefix, _ = utils.GetFileAddressPrefix(ctx)
return
}