当前位置:首页 » Python程序 » Django完成文件网页上传

Django完成文件网页上传

316°c 2021年04月20日 08:29 Python程序 0条评论
  移步手机端

1、打开你手机的二维码扫描APP
2、扫描左则的二维码
3、点击扫描获得的网址
4、可以在手机端阅读此文章

文中案例为大伙儿共享了Django完成文件提交下载的实际编码,供大伙儿参照,主要内容以下

一、django完成文件下载

(1)、后台管理插口

假如从服务器立即将文件途径发送给电脑浏览器,一般文件能够 立即下载,而照片,html,css和pdf格式等文件会立即表明,因此解决方案便是在头文件中让文件流载入电脑硬盘.

①、非常简单的文件下载作用的完成,立即将文件流放进HttpResponse对象就可以

def file_download(request):
 # do something...
 with open('file_name.txt') as f:
  c = f.read()
 return HttpResponse(c)

这类方法简单直接,合适小文件的下载,但假如这一文件十分大,这类方法会占有很多的运行内存,乃至造成服务器崩溃

②、更有效的文件下载

Django的HttpResponse对象运作将迭代器做为传到主要参数,将上边编码中的传到主要参数c换为一个迭代器,便能够 将以上下载作用提升为对尺寸文件均合适;而Django更进一步,强烈推荐应用 StreamingHttpResponse对象替代HttpResponse对象,StreamingHttpResponse对象用以将文件流发给电脑浏览器,与HttpResponse对象十分类似,针对文件下载作用,应用StreamingHttpResponse对象更有效。因而,更为有效的文件下载作用,应当先写一个迭代器,用以解决文件,随后将这一迭代器做为参数传递给StreaminghttpResponse对象,如:

from django.http import StreamingHttpResponse
def big_file_download(request):
 # do something...
 def file_iterator(file_name, chunk_size=512):
  with open(file_name) as f:
   while True:
    c = f.read(chunk_size)
    if c:
     yield c
    else:
     break
 the_file_name = "file_name.txt"
 response = StreamingHttpResponse(file_iterator(the_file_name))
 return response

③、再度提升

以上的编码,早已完成了将网络服务器上的文件,根据文件流传送到电脑浏览器,但文件流一般会以错码方式表明到电脑浏览器中,并非下载到电脑硬盘上,因而,也要在做些提升,让文件流载入电脑硬盘。提升非常简单,给StreamingHttpResponse对象的Content-Type和Content-Disposition字段名赋下边的值就可以

from django.http import StreamingHttpResponse
def big_file_download(request):
 # do something...
 def file_iterator(file_name, chunk_size=512):
  with open(file_name) as f:
   while True:
    c = f.read(chunk_size)
    if c:
     yield c
    else:
     break
 the_file_name = "big_file.pdf"
 response = StreamingHttpResponse(file_iterator(the_file_name))
 response['Content-Type'] = 'application/octet-stream'
 response['Content-Disposition'] = 'attachment;filename="{0}"'.format(the_file_name)
 return response

(2)、前台接待展现

①、应用a标签立即浏览到上边的主视图涵数配备好的url就可以

②、应用button,或是别的标识

应用js开启点击事件,编码以下:

$("body").on("click",".buttonimgdown",function(){
 alert($(".hiddenshiyan").val());
 location.href="/downloadFile/?url=" rel="external nofollow"  $(".hiddenshiyan").val();
});

二 文件提交

(1)、前台接待表格,应用表格的方法开展文件的提交

<form enctype="multipart/form-data" action="./upload" method="post">
<p>File: <input type="file" name="file"></p>
<p><input type="submit" value="Upload"></p>
</form>

(2)、后台管理接受,它是接受照片的编码,别的文件相近

def addOnepicture(req):
rollpicturePath=os.path.join(basePath,rollpictureName)
reqfile = req.FILES['picfile']
img = Image.open(reqfile)
img.thumbnail((500,500),Image.ANTIALIAS)#对图片开展等比放缩
img.save(rollpicturePath,"png")#存图
T_Picture.objects.create(<u>...</u>)

之上便是文中的所有内容,期待对大伙儿的学习培训有一定的协助,也期待大伙儿多多的适用大家。

欢迎阅读本文,希望本文对您有所帮助!

本文链接:http://www.cqrxzs.com/3857.html

版权声明:本文为原创文章,版权归 雨凡教育 所有,欢迎分享本文,转载请保留出处!

百度推荐获取地址:http://tuijian.baidu.com/,百度推荐可能会有一些未知的问题,使用中有任何问题请直接联系百度官方客服!

评论(0) 赞助本站

发表评论:


【顶】 【踩】 【好】 【懵】 【赞】 【表情】

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

推荐阅读
04月21日

Python应用tkinter模块完成推箱子游戏

发布 : | 分类 : Python程序 | 评论 : 0人 | 浏览 : 4877次

前段时间用C语言做了个字符版的推箱子,着实是比较简陋。正好最近用到了Python,然后想着用Python做一个图形界面的推箱子。这回可没有C那么简单,首先Python的图形界面我是没怎么用过,在网上找了一大堆教材,最后选择了tkinter,没什么特别的原因,只是因为网上说的多。 接下来就来和大家分享一下,主要分享两点,第一就是这个程序的实现过程,第二点就是我在编写过程中的一些思考。 一、介绍 开发语言:Python 3.7 开发工具:PyCharm 2019.2.4 日期:2019年10月2...

04月20日

python内置函数sorted()用法深入分析

发布 : | 分类 : Python程序 | 评论 : 0人 | 浏览 : 340次

文中案例叙述了python内置函数sorted()用法。共享给大伙儿供大伙儿参照,实际以下: 列表目标出示了sort()方式适用原地排序,而内置函数sorted()不兼容原地实际操作仅仅回到新的列表,并不对原列表开展一切改动。sorted()方式能够 对列表、元组、词典、range目标等开展排序。列表的sort()方式和内置函数sorted()都适用key主要参数完成繁杂排序规定。 #应用key来特定排序根据,先按名字降序排序,名字同样的按年纪降序排序 >>> person...

04月20日

python生成器推导式用法简易示例

发布 : | 分类 : Python程序 | 评论 : 0人 | 浏览 : 342次

文中案例叙述了python生成器推导式用法。共享给大伙儿供大伙儿参照,实际以下: 1.生成器推导式是继列表推导式后的有一中python推导式,他比列表推导式速率更快,占有的运行内存也越来越少。 2.应用生成器目标时,能够 依据必须将他转换为目录或是元组,还可以是哟个生成器对像__next__()方式或内嵌涵数next()开展遍历,其具备可塑性求值的特性,开展一次遍历后便不可以再度方向內部原素,即浏览一次立刻清除生成器目标 >>> g = ((i 2)**2 for i in...

04月20日

Django完成文件网页上传

发布 : | 分类 : Python程序 | 评论 : 0人 | 浏览 : 316次

文中案例为大伙儿共享了Django完成文件提交下载的实际编码,供大伙儿参照,主要内容以下 一、django完成文件下载 (1)、后台管理插口 假如从服务器立即将文件途径发送给电脑浏览器,一般文件能够 立即下载,而照片,html,css和pdf格式等文件会立即表明,因此解决方案便是在头文件中让文件流载入电脑硬盘. ①、非常简单的文件下载作用的完成,立即将文件流放进HttpResponse对象就可以 def file_download(request): # do something......

04月20日

应用go在mangodb中开展CRUD操作

发布 : | 分类 : Python程序 | 评论 : 0人 | 浏览 : 309次

我还在学习培训go语言表达以前,在对数据库开展CRUD的操作基本上是用java和sql来对mysql数据库开展操作,可是到见习中公司业务全是用的是mangodb,根据一段学习时间后,我有了一些获得。 概述关系型数据库,非关系型数据库 关系型数据库:指选用了关系实体模型来机构数据信息的数据库。 关系实体模型指的便是二维表格实体模型,而一个关系型数据库便是由二维表以及中间的联络所构成的一个数据组织 非关系型数据库 非关系型数据库:指非关系型的,分布式系统的,且一般不确保遵照 ACID 标准的数据...

04月20日

ubuntu上安装python的实例方法

发布 : | 分类 : Python程序 | 评论 : 0人 | 浏览 : 298次

怎样在ubuntu安装python? python在ubuntu下有几种安装方式: ● 根据ubuntu官方网的apt工具包安装 ● 根据PPA(Personal Package Archive) 的apt工具包安装 ● 根据编译程序python源码安装 根据ubuntu官方网的apt工具包安装 sudo apt-get install python2.7 sudo apt-get install python3.4 安装进行后,可以用下边的指令开展确定 [email protect...

04月20日

Python3 无反复字符的最多子串的完成

发布 : | 分类 : Python程序 | 评论 : 0人 | 浏览 : 284次

题型: 给出一个字符串,你要找到在其中不带有反复字符的 最多子串 的长度。 示例: 示例 1: 键入: “abcabcbb” 输出: 3 表述: 由于无反复字符的最多子串是 “abc”,因此其长度为 3。 示例 2: 键入: “bbbbb” 输出: 1 表述: 由于无反复字符的最多子串是 “b”,因此其长度为 1。 示例 3: 键入: “pwwkew” 输出: 3 表述: 由于无反复字符的最多子串是 “wke”,因此其长度为 3。 一定要注意,你的答案务必是 子串 的长度,“pwke...

04月20日

Django完成文件上传和下载功能

发布 : | 分类 : Python程序 | 评论 : 0人 | 浏览 : 290次

文中案例为大伙儿共享了Django下进行文件提交和下载作用的实际编码,供大伙儿参照,具体内容以下 一、文件提交 Views.py def upload(request): if request.method == "POST": # 要求方式为POST时,开展解决 myFile = request.FILES.get("myfile", None) # 获得提交的文件,如果没有文件,则默认设置为None if not myFile: return HttpResponse("no f...

您好,欢迎到访网站!
  查看权限