当前位置: 首页 > 编程笔记 >

简单了解django文件下载方式

晏正豪
2023-03-14
本文向大家介绍简单了解django文件下载方式,包括了简单了解django文件下载方式的使用技巧和注意事项,需要的朋友参考一下

这篇文章主要介绍了简单了解django三种文件下载方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

推荐使用FileResponse,从源码中可以看出FileResponse是StreamingHttpResponse的子类,内部使用迭代器进行数据流传输。

在实际的项目中很多时候需要用到下载功能,如导excel、pdf或者文件下载,当然你可以使用web服务自己搭建可以用于下载的资源服务器,

如nginx,这里我们主要介绍django中的文件下载。

实现方式:a标签+响应头信息(当然你可以选择form实现)

<div class="col-md-4"><a href="{% url 'download' %}" rel="external nofollow" >点我下载</a></div>

方式一:使用HttpResponse
路由url:
    url(r'^download/',views.download,name="download"),
views.py代码
    from django.shortcuts import HttpResponse
    def download(request):
       file = open('crm/models.py', 'rb')
       response = HttpResponse(file)
       response['Content-Type'] = 'application/octet-stream' #设置头信息,告诉浏览器这是个文件
       response['Content-Disposition'] = 'attachment;filename="models.py"'
       return response
    方式二:使用StreamingHttpResponse, 其他逻辑不变,主要变化在后端处理:
      from django.http import StreamingHttpResponse
      def download(request):
         file=open('crm/models.py','rb')
         response =StreamingHttpResponse(file)
         response['Content-Type']='application/octet-stream'
         response['Content-Disposition']='attachment;filename="models.py"'
         return response
方式三:使用FileResponse
from django.http import FileResponse
def download(request):
 file=open('crm/models.py','rb')
 response =FileResponse(file)
 response['Content-Type']='application/octet-stream'
 response['Content-Disposition']='attachment;filename="models.py"'
 return response

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。

 类似资料:
  • 问题内容: 我是使用Django的新手,我正在尝试开发一个网站,用户可以在其中上传许多excel文件,然后将这些文件存储在媒体文件夹Webproject / project / media中。 然后,该文档会与它们上载的任何其他文档一起显示在列表中,你可以单击这些文档,它会显示有关它们的基本信息以及他们上载的excelfile的名称。从这里,我希望能够使用链接再次下载相同的excel文件: 我的网

  • 本文向大家介绍php实现简单文件下载的方法,包括了php实现简单文件下载的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了php实现简单文件下载的方法。分享给大家供大家参考。具体如下: 这里介绍的php文件下载代码,只是简单实现了一张图片的下载功能,还不完善,最好是封装到一个类里,或是采用函数调用。感兴趣的朋友可以在此基础上加以完善! php文件下载代码如下: 希望本文所述对大家的ph

  • 本文向大家介绍简单了解django orm中介模型,包括了简单了解django orm中介模型的使用技巧和注意事项,需要的朋友参考一下 什么是中介模型 中介模型针对的是ManyToMany(多对多)的时候第三张表的问题, 中介模型其实指的就是我们不通过Django创建第三张表,如果自己不创建第三张表,而是由django给我们创建,那就不存在中介模型 中介模型示例 普通的ManyToMany示例 这

  • 本文向大家介绍struts2实现简单文件下载功能,包括了struts2实现简单文件下载功能的使用技巧和注意事项,需要的朋友参考一下 Struts2提供了stream结果类型,该结果类型是专门用于支持文件下载功能的。配置stream类型的结果需要指定以下4个属性。   contentType:指定被下载文件的文件类型   inputName:指定被下载文件的入口输入流   contentDispos

  • 本文向大家介绍Django 大文件下载实现过程解析,包括了Django 大文件下载实现过程解析的使用技巧和注意事项,需要的朋友参考一下 django提供文件下载时,若果文件较小,解决办法是先将要传送的内容全生成在内存中,然后再一次性传入Response对象中: 如果文件非常大时,最简单的办法就是使用静态文件服务器,比如Apache或者Nginx服务器来处理下载。不过有时候,我们需要对用户的权限做一

  • 我正在使用Postman测试一个视图,该视图应该允许用户下载excel文件。这是视图。。 问题是,当我测试这个视图时,我无法从postman那里获得下载提示。相反,我从邮递员的回复中得到了损坏的数据。以下是一个示例输出: 为什么我不能下载文件?我错过了什么吗?

  • 问题内容: 只是寻找一种简单的解决方案,以在任何操作系统上的Node.js中下载和解压缩或文件。 不知道这是内置的,还是我必须使用单独的库。有任何想法吗?仅查找几行代码,因此当我想在节点中下载下一个zip文件时,就可以了。这样的感觉应该很容易和/或内置,但是我什么也找不到。谢谢! 问题答案: 结帐adm-zip。 ADM-ZIP是用于NodeJS的zip数据压缩的纯JavaScript实现。 该库

  • 问题内容: 我希望站点上的用户能够下载路径被遮盖的文件,以便不能直接下载它们。 例如,我希望URL如下所示: http://example.com/download/?f=somefile.txt 在服务器上,我知道所有可下载文件都位于文件夹中。 有没有一种方法可以使Django提供该文件供下载,而不是尝试查找URL和查看以显示它? 问题答案: 对于“两全其美”,你可以将S.Lott的解决方案与x