Django实现文件上传和下载功能


Posted in Python onOctober 06, 2019

本文实例为大家分享了Django下完成文件上传和下载功能的具体代码,供大家参考,具体内容如下

一、文件上传

Views.py

def upload(request):
 if request.method == "POST": # 请求方法为POST时,进行处理
 myFile = request.FILES.get("myfile", None) # 获取上传的文件,如果没有文件,则默认为None
 if not myFile:
 return HttpResponse("no files for upload!")
 # destination=open(os.path.join('upload',myFile.name),'wb+')
 destination = open(
 os.path.join("你的文件存放地址", myFile.name),
 'wb+') # 打开特定的文件进行二进制的写操作
 for chunk in myFile.chunks(): # 分块写入文件
 destination.write(chunk)
 destination.close()
 return HttpResponse("upload over!")
 else:
 file_list = []
 files = os.listdir('D:\python\Salary management system\django\managementsystem\\file')
 for i in files:
 file_list.append(i)
 return render(request, 'upload.html', {'file_list': file_list})

urls.py

url(r'download/$',views.download),

upload.html

<div class="container-fluid">
 <div class="row">
 <form enctype="multipart/form-data" action="/upload_file/" method="POST">
 <input type="file" name="myfile"/>
 <br/>
 <input type="submit" value="upload"/>
 </form>
 </div>
</div>

 页面显示

 Django实现文件上传和下载功能

二、文件下载

Views.py

from django.http import HttpResponse,StreamingHttpResponse
from django.conf import settings
 
def download(request):
 filename = request.GET.get('file')
 filepath = os.path.join(settings.MEDIA_ROOT, filename)
 fp = open(filepath, 'rb')
 response = StreamingHttpResponse(fp)
 # response = FileResponse(fp)
 response['Content-Type'] = 'application/octet-stream'
 response['Content-Disposition'] = 'attachment;filename="%s"' % filename
 return response
 fp.close()

HttpResponse会直接使用迭代器对象,将迭代器对象的内容存储城字符串,然后返回给客户端,同时释放内存。可以当文件变大看出这是一个非常耗费时间和内存的过程。

而StreamingHttpResponse是将文件内容进行流式传输,StreamingHttpResponse在官方文档的解释是:

The StreamingHttpResponse class is used to stream a response from Django to the browser. You might want to do this if generating the response takes too long or uses too much memory.

这是一种非常省时省内存的方法。但是因为StreamingHttpResponse的文件传输过程持续在整个response的过程中,所以这有可能会降低服务器的性能。

urls.py

url(r'^upload',views.upload),

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
从零学python系列之教你如何根据图片生成字符画
May 23 Python
Python中IPYTHON入门实例
May 11 Python
python多线程方式执行多个bat代码
Jun 07 Python
浅谈五大Python Web框架
Mar 20 Python
Sanic框架基于类的视图用法示例
Jul 18 Python
python requests 库请求带有文件参数的接口实例
Jan 03 Python
解决pycharm运行程序出现卡住scanning files to index索引的问题
Jun 27 Python
Django文件存储 自己定制存储系统解析
Aug 02 Python
python中的global关键字的使用方法
Aug 20 Python
详解Python3迁移接口变化采坑记
Oct 11 Python
深入了解Python装饰器的高级用法
Aug 13 Python
Matlab求解数组中的最大值及它所在的具体位置
Apr 16 Python
Django文件上传与下载(FileFlid)
Oct 06 #Python
Django实现文件上传下载
Oct 06 #Python
python编写猜数字小游戏
Oct 06 #Python
python实现猜数字游戏
Mar 25 #Python
python实现机器人卡牌
Oct 06 #Python
Django实现文件上传下载功能
Oct 06 #Python
使用turtle绘制五角星、分形树
Oct 06 #Python
You might like
mysql5的sql文件导入到mysql4的方法
2008/10/19 PHP
php 404错误页面实现代码
2009/06/22 PHP
php 连接mysql连接被重置的解决方法
2011/02/15 PHP
thinkphp项目如何自定义微信分享描述内容
2017/02/20 PHP
Laravel框架使用Seeder实现自动填充数据功能
2018/06/13 PHP
javascript读取xml
2006/11/04 Javascript
JS 巧妙获取剪贴板数据 Excel数据的粘贴
2009/07/09 Javascript
JQUERY的属性选择符和自定义选择符使用方法(二)
2011/04/07 Javascript
jquery统计复选框选中示例
2013/11/05 Javascript
封装的jquery翻页滚动(示例代码)
2013/11/18 Javascript
一个简单的jquery的多选下拉框(自写)
2014/05/05 Javascript
js实现缓冲运动效果的方法
2015/04/10 Javascript
jquery图片轮播特效代码分享
2020/04/20 Javascript
高性能JavaScript循环语句和条件语句
2016/01/20 Javascript
Bootstrap开发实战之响应式轮播图
2016/06/02 Javascript
jQuery实现订单提交页发送短信功能前端处理方法
2016/07/04 Javascript
深入理解JavaScript中的块级作用域、私有变量与模块模式
2016/10/31 Javascript
使用vue实现点击按钮滑出面板的实现代码
2017/01/10 Javascript
js控制按钮,防止频繁点击响应的实例
2017/02/15 Javascript
ES6学习教程之对象的扩展详解
2017/05/02 Javascript
解决JS外部文件中文注释出现乱码问题
2017/07/09 Javascript
Vue+Typescript中在Vue上挂载axios使用时报错问题
2019/08/07 Javascript
使用Layui搭建后台管理界面的操作方法
2019/09/20 Javascript
Python判断变量是否已经定义的方法
2014/08/18 Python
python查看列的唯一值方法
2018/07/17 Python
python实现zabbix发送短信脚本
2018/09/17 Python
浅谈python脚本设置运行参数的方法
2018/12/03 Python
Python 转换文本编码实现解析
2019/08/27 Python
python智联招聘爬虫并导入到excel代码实例
2019/09/09 Python
python 将视频 通过视频帧转换成时间实例
2020/04/23 Python
Django 解决新建表删除后无法重新创建等问题
2020/05/21 Python
Python3 pywin32模块安装的详细步骤
2020/05/26 Python
python判断正负数方式
2020/06/03 Python
拓展训练激励口号
2014/06/17 职场文书
县政府班子个人对照检查材料
2014/10/05 职场文书
2014年外联部工作总结
2014/11/17 职场文书