feat: 添加文件下载及字节流上传功能
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user