本文实例讲述了Python Web框架之Django框架文件上传功能。分享给大家供大家参考,具体如下:
——形式表单上传文件
- - - - - - Ajax上传文件
——基于形式表单和iframe自己实现ajax请求
1,创建项目
<强> 2,设置配置强>(注册app01,静态路径等等这些)及网址添加(略过)
<强> 3,观点视图函数强>
形式的视图收到了在request.FILES中的文件数据。从上述形式来的数据可以通过request.FILES(“文件”)来存取。
特别注意的是,只有当请求方法是,且发送请求的& lt; form>有属性enctype=岸嗖糠?格式”时,request.FILES中包含文件数据,否则request.FILES为空。
django。快捷方式进口呈现,重定向,HttpResponse 从app01导入模型 进口json 进口操作系统 def上传(请求): 如果请求。方法==玫健? img_list=models.Img.objects.all () 返回渲染(请求,”上传。html的,{img_list: img_list}) elif请求。方法==癙OST”: 用户=request.POST.get(“用户”) fafafa=request.POST.get (“fafafa”) obj=request.FILES.get (“fafafa”) #打印(obj.name obj.size) #读取文件名称和大小,返回后台 #打印(用户、fafafa) file_path=os.path.join(“静态”,“上传”,obj.name) f=开放(file_path,“世界银行”) 块的obj.chunks (): f.write(块) f.close () models.Img.objects.create (path=file_path) ret={“状态”:真的,“路径”:file_path} 返回HttpResponse (json.dumps (ret)) >之前<强> 4,文件操作方法强>
<代码> obj.read() 代码>:从文件中读取整个上传的数据,这个方法只适合小文件;
<代码> obj.chunks()> 代码:按块返回文件,通过在为循环中进行迭代,可以将大文件按块写入到服务器中,
<代码> obj.multiple_chunks() 代码>:这个方法根据myFile的大小,返回真实或者假,当myFile文件大于2.5米(默认为2.5米,可以调整)时,该方法返回真,否则返回假,因此可以根据该方法来选择选用读方法读取还是采用块方法
<代码> obj.name> 代码:这是一个属性,不是方法,该属性得到上传的文件名,包括后缀,如123. exe;
<代码> obj.size> 代码:这也是一个属性,该属性得到上传文件的大小。
<强> 5.1表单上传强>
& lt; !DOCTYPE html> & lt; html lang=癳n”比; & lt; head> & lt;元charset=皍tf - 8”比; & lt; title> Title & lt;/head> & lt; body> & lt;形式方法=昂? action="/上传。html " enctype=" multipart/格式”比; & lt;输入类型="文本" name="用户"/比; & lt;输入类型="文件" name=" fafafa "/比; & lt;输入类型="提交" value=" https://www.yisu.com/zixun/提交”/比; & lt;/form> & lt; div> {%在img_list项目%} & lt; img src=" https://www.yisu.com/{{项目。路径}}"/比; {% endfor %} & lt;/div> & lt;/body> & lt;/html> >之前<强> 5.2原生的ajax Http请求上传文件方法强>
涉及到两个对象FormData和XMLHttpRequest
利用FormData对象,我们可以通过JavaScript用一些键值对来模拟一系列表单控件,我们还可以使用XMLHttpRequest的<代码>发送()代码>方法来异步的提交这个“表”单。比起普通的ajax,使用FormData的最大优点就是我们可以异步上传一个二进制文件。
XMLHttpRequest是一个API,它为客户端提供了在客户端和服务器之间传输数据的功能。它提供了一个通过URL来获取数据的简单方式,并且不会使整个页面刷新。这使得网页只更新一部分页面而不会打扰到用户.XMLHttpRequest在AJAX中被大量使用。
XMLHttpRequest是一个JavaScript对象,它最初由微软设计,随后被Mozilla,苹果和谷歌采纳。如今,该对象已经被W3C组织标准化。通过它,你可以很容易的取回一个URL上的资源数据。尽管名字里有XML,但XMLHttpRequest可以取回所有类型的数据资源,并不局限于XML。而且除了HTTP,它还支持文件和ftp协议。
语法<代码> var myRequest=new XMLHttpRequest(); 代码>
& lt; !DOCTYPE html> & lt; html lang=癳n”比; & lt; head> & lt;元charset=皍tf - 8”比; & lt; title> TitlePython Web框架之Django框架文件上传功能详解