Python Web框架之Django框架文件上传功能详解

  

本文实例讲述了Python Web框架之Django框架文件上传功能。分享给大家供大家参考,具体如下:

  

  

——形式表单上传文件
  - - - - - - Ajax上传文件
  ——基于形式表单和iframe自己实现ajax请求

  

1,创建项目

  

 Python Web框架之Django框架文件上传功能详解

  

<强> 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>   

<代码> 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> Title

Python Web框架之Django框架文件上传功能详解