使用Django怎么实现文件上传和下载功能

  介绍

这篇文章将为大家详细讲解有关使用Django怎么实现文件上传和下载功能,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

<强>一、文件上传

视图。py

def 上传(请求):==,if  request.method “POST":, #,请求方法为POST时,进行处理=,,myFile  request.FILES.get (“myfile",,没有),#,获取上传的文件,如果没有文件,则默认为没有   ,if  not  myFile:   ,return  HttpResponse (“no  files  for 上传!“)   ,#目的地=开放(os.path.join(& # 39;上传# 39;,myFile.name), & # 39; wb + & # 39;)=,destination 开放(   ,os.path.join(“你的文件存放地址“,,myFile.name),   ,& # 39;wb + & # 39;), #,打开特定的文件进行二进制的写操作   ,for  chunk  myFile.chunks拷贝():,#,分块写入文件   ,destination.write(块)   ,destination.close ()   ,return  HttpResponse (“upload  !“)   ,其他的:=,file_list  []=,,files  os.listdir (& # 39; D: \ python \ Salary 处理制度django \ \管理\ \文件# 39;)   ,for 小姐:拷贝文件:   ,file_list.append(我)   ,return 渲染(请求,,& # 39;upload.html& # 39;,, {& # 39; file_list& # 39;:, file_list})

url。py

url(" # 39;下载/$ & # 39;,views.download),

上传。html

& lt; div 类=癱ontainer-fluid"比;   ,& lt; div 类=皉ow"比;   ,& lt; form  enctype=岸嗖糠?form-data", action=皍pload_file/?方法=癙OST"比;   ,& lt; input 类型=癴ile", name=癿yfile"/比;   ,& lt; br/比;   ,& lt; input 类型=皊ubmit",价值=https://www.yisu.com/zixun/"上传"/>   

,页面显示

, 使用Django怎么实现文件上传和下载功能

<强>二、文件下载

视图。py

得到django.http  import  HttpResponse StreamingHttpResponse   得到django.conf  import 设置   ,   def 下载(请求):=,,filename  request.GET.get(& # 39;文件# 39;)=,,filepath  os.path.join (settings.MEDIA_ROOT,文件名)=,fp 开放(filepath, & # 39; rb # 39;)=,,response  StreamingHttpResponse (fp)   ,# response =, FileResponse (fp)   ,响应[& # 39;内容类型# 39;],=,& # 39;应用程序/八进制# 39;   ,响应[& # 39;附加# 39;],=,& # 39;附件;文件名=? s" & # 39; %,文件名   return 响应   之前,fp.close ()

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

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

StreamingHttpResponse类用于流反应Django到浏览器。你可能会想这样做如果生成响应时间太长或使用太多内存。

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

url。py

url(" # 39; ^上传# 39;,views.upload),

关于使用Django怎么实现文件上传和下载功能就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看的到。

使用Django怎么实现文件上传和下载功能