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模拟登录百度代码分享(获取百度贴吧等级)
Dec 27 Python
python操作xml文件详细介绍
Jun 09 Python
Python os模块介绍
Nov 30 Python
十条建议帮你提高Python编程效率
Feb 16 Python
Python3学习笔记之列表方法示例详解
Oct 06 Python
python基于twisted框架编写简单聊天室
Jan 02 Python
使用PIL(Python-Imaging)反转图像的颜色方法
Jan 24 Python
python和mysql交互操作实例详解【基于pymysql库】
Jun 04 Python
wxPython实现文本框基础组件
Nov 18 Python
基于Python批量生成指定尺寸缩略图代码实例
Nov 20 Python
python通配符之glob模块的使用详解
Apr 24 Python
Python实现视频中添加音频工具详解
Dec 06 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
WordPress中获取所使用的模板的页面ID的简单方法
2015/12/31 PHP
Yii框架连接mongodb数据库的代码
2016/07/27 PHP
自制PHP框架之设计模式
2017/05/07 PHP
PHP中非常有用却鲜有人知的函数集锦
2019/08/17 PHP
jquery 年会抽奖程序
2011/12/22 Javascript
对于this和$(this)的个人理解
2013/09/08 Javascript
js全屏显示显示代码的三种方法
2013/11/11 Javascript
JavaScript必知必会(三) String .的方法来自何方
2016/06/08 Javascript
NodeJs的优势和适合开发的程序
2016/08/14 NodeJs
从零开始学习Node.js系列教程四:多页面实现数学运算的client端和server端示例
2017/04/13 Javascript
详解webpack和webpack-simple中如何引入css文件
2017/06/28 Javascript
js字符限制(字符截取) 一个中文汉字算两个字符
2017/09/12 Javascript
Vue中保存数据到磁盘文件的方法
2018/09/06 Javascript
记React connect的几种写法(小结)
2018/09/18 Javascript
vue-cli项目无法用本机IP访问的解决方法
2018/09/20 Javascript
在layui框架中select下拉框监听更改事件的例子
2019/09/20 Javascript
js实现跳一跳小游戏
2020/07/31 Javascript
[00:12]DAC SOLO赛卫冕冠军 VG.Paparazi灬展现SOLO技巧
2018/04/06 DOTA
python中实现迭代器(iterator)的方法示例
2017/01/19 Python
简单的python协同过滤程序实例代码
2018/01/31 Python
pandas数据预处理之dataframe的groupby操作方法
2018/04/13 Python
在Python 字典中一键对应多个值的实例
2019/02/03 Python
葡萄牙语专业个人求职信
2013/12/10 职场文书
无故旷工检讨书
2014/01/26 职场文书
2014年社区庆元旦活动方案
2014/03/08 职场文书
教师党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
运动会铅球比赛加油稿
2014/09/26 职场文书
夫妻婚内购房协议书
2014/10/05 职场文书
检讨书范文300字
2015/01/28 职场文书
邀请函格式范文
2015/02/02 职场文书
勤俭节约倡议书范文
2015/04/29 职场文书
2016继续教育研修日志
2015/11/13 职场文书
八年级数学教学反思
2016/02/17 职场文书
公文写作指导之倡议书!
2019/07/03 职场文书
html中显示特殊符号(附带特殊字符对应表)
2021/06/21 HTML / CSS
Java时间工具类Date的常用处理方法
2022/05/25 Java/Android