obs.go 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. package upload
  2. import (
  3. "mime/multipart"
  4. "github.com/huaweicloud/huaweicloud-sdk-go-obs/obs"
  5. "github.com/pkg/errors"
  6. "server/global"
  7. )
  8. var HuaWeiObs = new(Obs)
  9. type Obs struct{}
  10. func NewHuaWeiObsClient() (client *obs.ObsClient, err error) {
  11. return obs.New(global.GVA_CONFIG.HuaWeiObs.AccessKey, global.GVA_CONFIG.HuaWeiObs.SecretKey, global.GVA_CONFIG.HuaWeiObs.Endpoint)
  12. }
  13. func (o *Obs) UploadFile(file *multipart.FileHeader) (string, string, error) {
  14. // var open multipart.File
  15. open, err := file.Open()
  16. if err != nil {
  17. return "", "", err
  18. }
  19. defer open.Close()
  20. filename := file.Filename
  21. input := &obs.PutObjectInput{
  22. PutObjectBasicInput: obs.PutObjectBasicInput{
  23. ObjectOperationInput: obs.ObjectOperationInput{
  24. Bucket: global.GVA_CONFIG.HuaWeiObs.Bucket,
  25. Key: filename,
  26. },
  27. HttpHeader: obs.HttpHeader{
  28. ContentType: file.Header.Get("content-type"),
  29. },
  30. },
  31. Body: open,
  32. }
  33. var client *obs.ObsClient
  34. client, err = NewHuaWeiObsClient()
  35. if err != nil {
  36. return "", "", errors.Wrap(err, "获取华为对象存储对象失败!")
  37. }
  38. _, err = client.PutObject(input)
  39. if err != nil {
  40. return "", "", errors.Wrap(err, "文件上传失败!")
  41. }
  42. filepath := global.GVA_CONFIG.HuaWeiObs.Path + "/" + filename
  43. return filepath, filename, err
  44. }
  45. func (o *Obs) DeleteFile(key string) error {
  46. client, err := NewHuaWeiObsClient()
  47. if err != nil {
  48. return errors.Wrap(err, "获取华为对象存储对象失败!")
  49. }
  50. input := &obs.DeleteObjectInput{
  51. Bucket: global.GVA_CONFIG.HuaWeiObs.Bucket,
  52. Key: key,
  53. }
  54. var output *obs.DeleteObjectOutput
  55. output, err = client.DeleteObject(input)
  56. if err != nil {
  57. return errors.Wrapf(err, "删除对象(%s)失败!, output: %v", key, output)
  58. }
  59. return nil
  60. }