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实现扫描指定目录下的子目录及文件的方法
Jul 16 Python
详解Python中的Cookie模块使用
Jul 06 Python
python opencv之SIFT算法示例
Feb 24 Python
Python实例方法、类方法、静态方法的区别与作用详解
Mar 25 Python
selenium+python环境配置教程详解
May 28 Python
Django 开发环境与生产环境的区分详解
Jul 26 Python
Python3网络爬虫开发实战之极验滑动验证码的识别
Aug 02 Python
Python pandas.DataFrame 找出有空值的行
Sep 09 Python
详解使用Python下载文件的几种方法
Oct 13 Python
python中绕过反爬虫的方法总结
Nov 25 Python
Opencv+Python识别PCB板图片的步骤
Jan 07 Python
scrapy-splash简单使用详解
Feb 21 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
解析PHP处理换行符的问题 \r\n
2013/06/13 PHP
常见php数据文件缓存类汇总
2014/12/05 PHP
php实现httpRequest的方法
2015/03/13 PHP
PHP获取数组的键与值方法小结
2015/06/13 PHP
PHP实践教程之过滤、验证、转义与密码详解
2017/07/24 PHP
解决laravel 出现ajax请求419(unknown status)的问题
2019/09/03 PHP
获取当前网页document.url location.href区别总结
2008/05/10 Javascript
基于jquery的$.ajax async使用
2011/10/19 Javascript
JS取文本框中最小值的简单实例
2013/11/29 Javascript
处理文本部分内容的TextRange对象应用实例
2014/07/29 Javascript
js函数内变量的作用域分析
2015/01/12 Javascript
JavaScript简单表格编辑功能实现方法
2015/04/16 Javascript
jQuery判断一个元素是否可见的方法
2015/06/05 Javascript
原生js制作日历控件实例分享
2016/04/06 Javascript
onclick和onblur冲突问题的快速解决方法
2016/04/28 Javascript
bootstrap响应式表格实例详解
2017/05/15 Javascript
Angular中的$watch、$watchGroup、$watchCollection
2017/06/25 Javascript
微信小程序实现抖音播放效果的实例代码
2020/04/11 Javascript
jQuery实现回到顶部效果
2020/10/19 jQuery
Python多线程、异步+多进程爬虫实现代码
2016/02/17 Python
python matplotlib 注释文本箭头简单代码示例
2018/01/08 Python
Python连接Mssql基础教程之Python库pymssql
2018/09/16 Python
python实现词法分析器
2019/01/31 Python
详解Python匿名函数(lambda函数)
2019/04/19 Python
详解python编译器和解释器的区别
2019/06/24 Python
python内置函数sorted()用法深入分析
2019/10/08 Python
Django实现简单网页弹出警告代码
2019/11/15 Python
关于HTML5你必须知道的28个新特性,新技巧以及新技术
2012/05/28 HTML / CSS
HTML5+CSS3实现机器猫
2016/10/17 HTML / CSS
业务代表的岗位职责
2013/11/16 职场文书
大学生涯自我鉴定
2014/01/16 职场文书
小学生获奖感言范文
2014/02/02 职场文书
质量承诺书范文
2014/03/27 职场文书
六年级学生评语大全
2014/12/26 职场文书
教师年终个人总结
2015/02/11 职场文书
赞助商致辞
2015/07/30 职场文书