You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
37 lines
901 B
37 lines
901 B
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 |
|
}
|
|
|