38 lines
901 B
Go
38 lines
901 B
Go
package service
|
|
|
|
import (
|
|
"context"
|
|
"net/http"
|
|
"time"
|
|
|
|
"go-common/app/admin/main/upload/model"
|
|
|
|
"github.com/pkg/errors"
|
|
)
|
|
|
|
// UploadAdminRecord upload file to bfs
|
|
func (s *Service) UploadAdminRecord(ctx context.Context, action string, up *model.UploadParam, data []byte) (result *model.UploadResult, err error) {
|
|
var (
|
|
location, etag string
|
|
b *model.Bucket
|
|
ok bool
|
|
)
|
|
if b, ok = s.bucketCache[up.Bucket]; !ok {
|
|
err = errors.Errorf("read bucket items failed: (%s)", up.Bucket)
|
|
return
|
|
}
|
|
// auth calc.
|
|
up.Auth = s.dao.Bfs.Authorize(b.KeyID, b.KeySecret, http.MethodPut, up.Bucket, up.FileName, time.Now().Unix())
|
|
if up.ContentType == "" {
|
|
up.ContentType = http.DetectContentType(data)
|
|
}
|
|
if location, etag, err = s.dao.Bfs.Upload(ctx, up, data); err != nil {
|
|
return
|
|
}
|
|
result = &model.UploadResult{
|
|
Location: location,
|
|
Etag: etag,
|
|
}
|
|
return
|
|
}
|