暫無描述

qiniucdn.py 1.8KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. # -*- coding: utf-8 -*-
  2. import pngquant
  3. import qiniu
  4. from django.conf import settings
  5. QINIU = settings.QINIU
  6. auth = qiniu.Auth(QINIU['access_key'], QINIU['secret_key'])
  7. pngquant.config(settings.PNG_QUANT_FILE)
  8. def upload(data, key=None, mime_type='application/octet-stream', bucket=QINIU['bucket_default'], compress=True):
  9. if not data:
  10. return ''
  11. if compress:
  12. try:
  13. data = pngquant.quant_data(data, ndeep=3)[1]
  14. except Exception as e:
  15. pass
  16. token = auth.upload_token(bucket, key=key)
  17. ret, _ = qiniu.put_data(token, key, data, mime_type=mime_type)
  18. return ret.get('key')
  19. def upload_file_admin(obj, key=None, mime_type='application/octet-stream', bucket=QINIU['bucket_default'], compress=True):
  20. # Django Admin Upload
  21. if not obj.image:
  22. return ''
  23. obj.image.seek(0)
  24. return upload(obj.image.read(), key=key or obj.image.name, mime_type=mime_type, bucket=bucket, compress=compress)
  25. def upload_file_req(file, key=None, mime_type='application/octet-stream', bucket=QINIU['bucket_default'], compress=True):
  26. # photo = request.FILES.get('photo', '')
  27. # <InMemoryUploadedFile: photo.png (image/png)>
  28. if not file:
  29. return ''
  30. file.seek(0)
  31. return upload(file.read(), key=key or file.name, mime_type=mime_type, bucket=bucket, compress=compress)
  32. def upload_file_path(path, key=None, mime_type='application/octet-stream', bucket=QINIU['bucket_default'], compress=True):
  33. if not path:
  34. return ''
  35. token = auth.upload_token(bucket, key=key)
  36. ret, _ = qiniu.put_file(token, key, path, mime_type=mime_type)
  37. return ret.get('key')
  38. def qiniu_file_url(key, bucket=QINIU['bucket_default']):
  39. if not key:
  40. return ''
  41. return '{}/{}'.format(QINIU['buckets'][bucket] if settings.QINIU_FILE_URL_HTTPS else settings.QINIU_FILE_URL_AFTER, key)