脚本之家

电脑版
提示:原网页已由神马搜索转码, 内容由www.jb51.net提供.
您的位置:首页脚本专栏python→ Django文件上传和下载

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

  更新时间:2019年10月06日 11:17:07  作者:python_voice 
这篇文章主要为大家详细介绍了Django下完成文件上传和下载功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了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>

 页面显示

 

二、文件下载

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如何计算圆的周长和面积问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
      2023-07-07
    • 今天小编就为大家分享一篇关于Python中的集合介绍,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
      2019-01-01
    • 这篇文章主要介绍了在VS Code上搭建Python开发环境的方法,需要的朋友可以参考下
      2018-04-04
    • 这篇文章主要介绍了使用Python中的cookielib模拟登录网站,用作生成cookie然后登录,需要的朋友可以参考下
      2015-04-04
    • 在本文里小编给大家整理了关于Python编程中类与类的关系以及相关代码知识点,需要的朋友们可以学习下。
      2019-08-08
    • 今天小编就为大家分享一篇将pandas.dataframe的数据写入到文件中的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
      2018-12-12
    • 这篇文章将详细讲解Python图和基于纹理背景的图像分割和聚类算法实现图像分割效果,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
      2023-01-01
    • 本文是Python入门篇的第一篇文章,主要讲述了Python编程习惯和特点等一些基础知识,有需要的朋友可以参考下
      2014-10-10
    • 这篇文章主要介绍了Django Rest framework之权限的实现示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
      2018-12-12
    • 这篇文章主要介绍了Python实现带下标索引的遍历操作,结合具体实例形式分析了2种带索引的遍历操作实现方法及相关操作注意事项,需要的朋友可以参考下
      2019-05-05

    最新评论