Django上传下载文件
本教程适用
- 安装有django2.X-3.X
- django2-3上传下载文件
一、django2-3上传
- 在templates中设置
<form method="POST" action="" enctype="multipart/form-data">
#enctype="multipart/form-data"是用于文件上传,没有就不能上传
{% csrf_token %}
<input type="file" name="files">
#html中file是用于传输文件,name是在views中提取
<br>
<input type="submit" value="上传">
</form>
- 在views中提取excle文件
file_data = request.FILES.get('files','你未选择文件请选择excel文件后再导入!')
#注:files是templates中的name='files'
#提取文件用request.FILES.get(key,自定义内容)
#注:提取的request.FILES.get(key,自定义内容)当作excel文件来处理。
二、下载文件
- 使用HTTPResponse库下载文件
from django.shortcuts import HttpResponse
- 实例化
#注:content_type='application/vnd.ms-excel'表明类型是excel
response = HttpResponse(content_type='application/vnd.ms-excel')
#用urlquote时文件名才支持中文
filename_tem= urlquote(filename)
# 设置文件名称
response['Content-Disposition'] = 'attachment;filename=%s.xls'%filename_tem
- excel文件保存为二进
#1.二进制实例化
output = BytesIO()
#2.写excel文件(写成excel文件后,将excel文件二进制化)
excel_file.save(output)
#3.重新定位到开始
output.seek(0)
- #excel文件保存为HttpResponse
response.write(output.getvalue())
- 一定要返回HTTPResponse对象
return response
- 完整代码
def export_excel(request,filename,data):
#用urlquote时文件名才支持中文
filename1= urlquote(filename)
# 设置HTTPResponse的类型
response = HttpResponse(content_type='application/vnd.ms-excel')
# 设置文件名称
response['Content-Disposition'] = 'attachment;filename=%s.xls'%filename1
#取得excel文件
output = excel_writer(request,filename,data)
'''
1.二进制实例化
output = BytesIO()
2.写excel文件
写成excel文件后,将excel文件二进制化
excel_file.save(output)
3.重新定位到开始
output.seek(0)
'''
#excel文件保存为HttpResponse
response.write(output.getvalue())
#下载excel表
return response
完