下载七牛云SDK
pip install qiniu
配置上传密钥,上传空间
定义上传文件/二进制文件的函数
import qiniu
AUTH = qiniu.Auth(
'2tnO1EafA4nxxccvdMaTERpSrSXpFmvccPCuBE4r',
'-KreVA7Wi0Gsd6RfCgWEu76rgzcikr_q96y_-UAY'
)
BUCKET_NAME = 'yaoyao123'
# 普通文件上传函数(大文件)
def upload_file_to_qiniu(key, filepath):
token = AUTH.upload_token(BUCKET_NAME, key)
return qiniu.put_file(token, key, filepath)
# 二进制文件上传函数(放入内存中的小文件<2.5M)
def upload_stream_to_qiniu(key, stream, size):
token = AUTH.upload_token(BUCKET_NAME, key)
return qiniu.put_stream(token, key, stream, None, size)
调用上传文件到七牛云的函数
from polls.utils import upload_stream_to_qiniu
@csrf_exempt
def upload(request):
photo = request.FILES.get('photo')
# 通过os.path.splitext将文件拆分成文件名和拓展名
_, ext = os.path.splitext(photo.name)
filename = f'{uuid.uuid1().hex}{ext}'
# 放到线程池中运行,还没等到程序运行,变量已被释放。这里将文件拷贝避免这种问题。
POOL.submit(upload_stream_to_qiniu, filename, copy.copy(photo.file), photo.size)
return redirect('/static/html/upload.html')