在python web开发中的文件上传与下载

Posted 问君能有几多愁

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在python web开发中的文件上传与下载相关的知识,希望对你有一定的参考价值。

django 框架下 实现服务端的文件上传与下载:

import json
import os
import uuid

def attachment_upload(request):
"""文件上传"""
ret = {"status": False, "data": {"path": "", "name": ""}, "summary": ""}
target ="media/upload/avatar" # 文件保存路径
try:
# 获取文件对象
file_obj = request.FILES.get("file")
raw_name = file_obj.name
if not file_obj:
pass
else:
# 检查目录存不存在,如果不存在新建一个
if not os.path.exists(os.path.dirname(target)):
os.makedirs(target)
file_name = str(uuid.uuid4())
file_path = os.path.join(target, file_name)
with open(file_path, "wb") as f:
for chunk in file_obj.chunks(): # chuck是分块写入文件 (.chunks()上循环而不是用read()保证大文件不会大量使用你的系统内存。)
f.write(chunk)
ret["status"] = True
ret["data"][‘path‘] = file_path
ret["data"][‘name‘] = raw_name
except Exception as e:
ret["summary"] = str(e)
return HttpResponse(json.dumps(ret))


def attachment_download(request):
"""文件下载"""
name = request.GET.get("name", None)
file_path = request.GET[‘url‘]
def file_iterator(file_path, chunk_size=512):
with open(file_path, ‘rb‘) as f:
while True:
c = f.read(chunk_size)
if c:
yield c
else:
break
response = StreamingHttpResponse(file_iterator(file_path))
response[‘Content-Type‘] = ‘application/octet-stream‘
response[‘Content-Disposition‘] = ‘attachment;filename="{0}"‘.format(name.encode(‘utf-8‘).decode(‘ISO-8859-1‘))
return response

以上是关于在python web开发中的文件上传与下载的主要内容,如果未能解决你的问题,请参考以下文章

Servlet Java Web开发上传下载和邮件

Spring Boot的文件上传与下载

Java web开发——文件的上传和下载

文件的上传与下载

分享一个FileUtil工具类,基本满足web开发中的文件上传,单个文件下载,多个文件下载的需求

pythonftp给文件授权