obs.go 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  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. ContentType: file.Header.Get("content-type"),
  28. },
  29. Body: open,
  30. }
  31. var client *obs.ObsClient
  32. client, err = NewHuaWeiObsClient()
  33. if err != nil {
  34. return "", "", errors.Wrap(err, "获取华为对象存储对象失败!")
  35. }
  36. _, err = client.PutObject(input)
  37. if err != nil {
  38. return "", "", errors.Wrap(err, "文件上传失败!")
  39. }
  40. filepath := global.GVA_CONFIG.HuaWeiObs.Path + "/" + filename
  41. return filepath, filename, err
  42. }
  43. func (o *Obs) DeleteFile(key string) error {
  44. client, err := NewHuaWeiObsClient()
  45. if err != nil {
  46. return errors.Wrap(err, "获取华为对象存储对象失败!")
  47. }
  48. input := &obs.DeleteObjectInput{
  49. Bucket: global.GVA_CONFIG.HuaWeiObs.Bucket,
  50. Key: key,
  51. }
  52. var output *obs.DeleteObjectOutput
  53. output, err = client.DeleteObject(input)
  54. if err != nil {
  55. return errors.Wrapf(err, "删除对象(%s)失败!, output: %v", key, output)
  56. }
  57. return nil
  58. }