upload_to_oss.py 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. # -*- coding: utf-8 -*-
  2. import os
  3. import oss2
  4. import requests
  5. import uuid
  6. import time
  7. class MyOSS:
  8. def __init__(self):
  9. """
  10. """
  11. self.AccessKeyID = 'LTAI5t8bioQxGXB1jtVugJcU'
  12. self.AccessKeySecret = 'OdGWSBRjkJxaPjgmE38eQ8nzkI6nRk'
  13. self.bucket_name = 'hunanwanzhu'
  14. self.root_name = 'hnwz'
  15. self.auth = oss2.Auth(self.AccessKeyID, self.AccessKeySecret)
  16. self.endpoint = 'http://oss-cn-shenzhen.aliyuncs.com'
  17. self.bucket = oss2.Bucket(self.auth, self.endpoint, self.bucket_name)
  18. self.domain = 'http://hunanwanzhu.oss-cn-shenzhen.aliyuncs.com'
  19. self.watermark = '?x-oss-process=image/auto-orient,1/quality,q_90/watermark,text_6aG95Li75p2v5a6e55uY5aSn6LWb,color_ff0000,size_50,rotate_330,g_center,t_70,x_10,y_10'
  20. def upload_from_str(self,content_str=None,filename=None,watermark=True):
  21. '''
  22. 通过字符串上传
  23. byte,unicode,str
  24. '''
  25. filename = os.path.join(self.root_name,filename)
  26. result = self.bucket.put_object(filename,content_str)
  27. if result.status == 200:
  28. url = os.path.join(self.domain,filename)
  29. else:
  30. url = ''
  31. if watermark:
  32. return url + self.watermark if url else ""
  33. else:
  34. return url
  35. def upload_from_local(self, localfile=None, ossfile=None):
  36. '''
  37. 上传本地文件到oss
  38. '''
  39. ossfile = os.path.join(self.root_name, ossfile)
  40. with open(localfile, 'rb') as fileobj:
  41. result = self.bucket.put_object(ossfile, fileobj)
  42. if result.status == 200:
  43. url = os.path.join(self.domain, ossfile)
  44. else:
  45. url = ''
  46. return url + self.watermark if url else ""
  47. def resumable_upload_from_local(self, localfile=None, ossfile=None):
  48. ossfile = os.path.join(self.root_name, ossfile)
  49. result = oss2.resumable_upload(self.bucket,ossfile,localfile,
  50. store=oss2.ResumableStore(root='/tmp'),
  51. multipart_threshold=100*1024,
  52. part_size=100*1024,
  53. num_threads=4,
  54. )
  55. if result.status == 200:
  56. url = os.path.join(self.domain,ossfile)
  57. else:
  58. url = ''
  59. return url
  60. def upload_from_url(self, url=None, ossfile=None):
  61. '''
  62. '''
  63. ossfile = os.path.join(self.root_name,ossfile)
  64. resp = requests.get(url)
  65. result = self.bucket.put_object(ossfile,resp)
  66. if result.status == 200:
  67. url = os.path.join(self.domain,ossfile)
  68. else:
  69. url = ''
  70. return url + self.watermark if url else ""
  71. hnoss = MyOSS()
  72. if __name__ == '__main__':
  73. myoss = MyOSS()
  74. localfile = '/tmp/test.txt'
  75. ossfile = 'test/test.txt'
  76. url = myoss.resumable_upload_from_local(localfile,ossfile)
  77. print url