框架----Django之文件上传

一、文件上传

1. 浏览器访问

http://127.0.0.1:8000/f1/

http://127.0.0.1:8000/f2/

2. urls

from django.conf.urls import url
from django.contrib import admin
from app01 import views

urlpatterns = [
    url(r‘^admin/‘, admin.site.urls),
    url(r‘^f1/‘, views.f1),
    url(r‘^f2/‘, views.f2),
]

3. views

 1 from django.shortcuts import render,redirect,HttpResponse
 2 from app01 import models
 3 from django.forms import Form
 4 from django.forms import fields
 5 from django.forms import widgets
 6
 7
 8 # **************************文件上传**************************
 9 def f1(request):
10     if request.method == "GET":
11         return render(request,‘f1.html‘)
12     else:
13         import os
14         # request.POST
15         file_obj = request.FILES.get(‘fafafa‘)
16         f = open(os.path.join(‘static‘,file_obj.name),‘wb‘)
17         for chunk in file_obj.chunks():
18             f.write(chunk)
19         f.close()
20         # return render(request,‘f1.html‘)         # 上传成功后刷新当前页面
21         return HttpResponse(‘上传成功‘)          # 上传完成后显示文字
22
23 class F2Form(Form):
24     user = fields.CharField()
25     fafafa = fields.FileField()
26
27 def f2(request):
28     if request.method == "GET":
29         obj = F2Form()
30         return render(request,‘f2.html‘,{‘obj‘:obj})
31     else:
32         obj = F2Form(data=request.POST,files=request.FILES)
33         if obj.is_valid():
34             print(obj.cleaned_data.get(‘fafafa‘).name)
35             print(obj.cleaned_data.get(‘fafafa‘).size)
36         return render(request,‘f2.html‘,{‘obj‘:obj})

views

4. templates

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title></title>
 6 </head>
 7 <body>
 8     <form method="POST" action="/f1/" enctype="multipart/form-data">
 9         {% csrf_token %}
10         <input type="text" name="user" />
11         <input type="file" name="fafafa" />
12         <input type="submit" value="提交" />
13     </form>
14 </body>
15 </html>

f1.html

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title></title>
 6 </head>
 7 <body>
 8     <form method="POST" action="/f2/" enctype="multipart/form-data">
 9         {# 不能少了这个属性:enctype="multipart/form-data" ,否则后台拿不到数据 #}
10
11         {% csrf_token %}
12         {{ obj.user }}
13         {{ obj.fafafa }}
14         <input type="submit" value="提交" />
15     </form>
16 </body>
17 </html>

f2.html

二、文件上传--------原生Ajax上传文件、jQuery Ajax上传文件、伪Ajax上传文件

1. 浏览器访问

http://127.0.0.1:8000/upload/

2. urls

from django.conf.urls import url
from django.contrib import admin
from app01 import views

urlpatterns = [
    url(r‘^admin/‘, admin.site.urls),
    url(r‘^upload/‘, views.upload),
]

3. views

 1 from django.shortcuts import render,HttpResponse,redirect
 2
 3 import os
 4 def upload(request):
 5     if request.method == ‘GET‘:
 6         return render(request,‘upload.html‘)
 7     else:
 8         print(request.POST,request.FILES)
 9         file_obj = request.FILES.get(‘fafafa‘)
10         file_path = os.path.join(‘static‘,file_obj.name)
11         with open(file_path,‘wb‘) as f:
12             for chunk in file_obj.chunks():
13                 f.write(chunk)
14
15         return HttpResponse(file_path)

views

4. templates

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title></title>
 6 </head>
 7 <body>
 8     <h1>原生Ajax上传文件</h1>
 9     <input type="file" id="i1" />
10     <a onclick="upload1();">上传</a>
11     <div id="container1"></div>
12
13     <h1>jQuery Ajax上传文件</h1>
14     <input type="file" id="i2" />
15     <a onclick="upload2();">上传</a>
16     <div id="container2"></div>
17
18     <h1>伪 Ajax上传文件</h1>
19     <form id="f1" method="POST" action="/upload/" target="ifr" enctype="multipart/form-data">
20         <iframe id="ifr" name="ifr" style="display: none"></iframe>
21         <input type="file" name="fafafa" />
22         <a onclick="upload3();">上传</a>
23     </form>
24     <div id="container3"></div>
25
26     <script>
27     /* $$$$$$ 原生Ajax上传文件 $$$$$$ */
28         function upload1() {
29             var formData = new FormData();
30             formData.append(‘k1‘,‘v1‘);
31             formData.append(‘fafafa‘,document.getElementById(‘i1‘).files[0]);
32
33             var xhr = new XMLHttpRequest();
34             xhr.onreadystatechange = function () {
35                 if(xhr.readyState == 4){
36                     var file_path = xhr.responseText;
37                     var tag = document.createElement(‘img‘);
38                     tag.src = ‘/‘+ file_path;
39                     document.getElementById(‘container1‘).appendChild(tag);
40                 }
41             };
42             xhr.open(‘POST‘,‘/upload/‘);
43             xhr.send(formData);
44         }
45
46
47     /* $$$$$$ jQuery Ajax上传文件 $$$$$$ */
48         function upload2() {
49             var formData = new FormData();
50             formData.append(‘k1‘,‘v1‘);
51             //formData.append(‘fafafa‘,document.getElementById(‘i1‘).files[0]);
52             formData.append(‘fafafa‘,$(‘#i2‘)[0].files[0]);
53             //$(‘#i2‘) ->  $(‘#i2‘)[0]
54             //document.getElementsByName(‘i1‘) ->  $(document.getElementById(‘i1‘))
55
56             $.ajax({
57                 url:‘/upload/‘,
58                 type:‘POST‘,
59                 data:formData,
60                 contentType:false,
61                 processData:false,
62                 success:function (arg) {
63                     var tag = document.createElement(‘img‘);
64                     tag.src = ‘/‘+ arg;
65                     $(‘#container2‘).append(tag);
66                 }
67             })
68         }
69
70         /* $$$$$$ 伪 Ajax上传文件 $$$$$$ */
71             function upload3() {
72                 document.getElementById(‘ifr‘).onload = loadIframe;
73                 document.getElementById(‘f1‘).submit();
74             }
75             function loadIframe() {
76                 var content = document.getElementById(‘ifr‘).contentWindow.document.body.innerText;
77                 var tag = document.createElement(‘img‘);
78                 tag.src = ‘/‘+ content;
79                 $(‘#container3‘).append(tag);
80             }
81     </script>
82 </body>
83 </html>

upload.html

5. 执行结果截图

 

时间: 2024-10-06 20:05:07

框架----Django之文件上传的相关文章

python Django之文件上传

python Django之文件上传 使用Django框架进行文件上传共分为俩种方式 一.方式一 通过form表单进行文件上传 #=========================================FORM表单上传文件======================================== def f1(request): #定义f1上传函数 if request.method=='GET': #如果是以GET请求 return render(request,'f1.htm

SSM框架-SpringMVC 实例文件上传下载

SSM框架-SpringMVC 实例文件上传下载 2017-04-17 09:38 4497人阅读 评论(6) 收藏 举报  分类: java基础(3)  目录(?)[+] 目录(?)[+] 林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 本文详细讲解了SpringMVC实例单文件上传.多文件上传.文件列表显示.文件下载. 本文工程免费下载 一.新建一个Web工程,导入相关的包 springmvc的包+commons-fileupload

django的文件上传&amp;JsonResponse的使用&amp;数据库的连接

1 request对象 method:请求方式 GET:get请求的参数(post请求,也可以携带参数) POST:post请求的参数(本质是从bdoy中取出来,放到里面了) COOKIES: META:字典(放着好多东西,前端传过来的,一定能从其中拿出来) body:post提交的数据 path:请求的路径,不带参数 request.get_full_path() 请求路径,带参数 session: user: FILES encoding:编码格式 is_ajax(): 2 HttpResp

十、Django的文件上传

一.上传文件相关 请求头ContentType ContentType指的是请求体的编码类型,常见的类型共有3种: application/x-www-form-urlencoded 最常见的 POST 提交数据的方式了 浏览器的原生 form 表单,如果不设置?enctype?属性,那么最终就会以 默认格式application/x-www-form-urlencoded 方式提交数据,ajax默认也是这个 urlencoded是一种数据格式, 比如: username=yang&passwo

第一零四天上课 PHP TP框架下的文件上传

<?php namespace Home\Controller; use Home\Controller\EmptyController; class TestController extends EmptyController { public function test() { if(empty($_POST['submit'])) { $this->display(); } else { $upload = new \Think\Upload(); //实例化文件上传类 第一个斜杠不能少

Django普通文件上传

前端代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script src="/static/jquery-3.2.1.min.js"></script> <script src="/static/jquery

SSM框架中使用文件上传的示例

1.首先要导入文件上传需要的jar包  commons-fileupload-1.3.2.jar  用于文件上传,但是只有这个包也是不行的 ,  commons-fileupload-1.3.2.jar 依赖于  commons-io-2.5.jar 一起使用 2.在配置文件中配置文件解析器,默认是关闭的,所以要打开一下,在spring-mvc配置文件中配置一下 <!-- 文件解析器 --> <bean id="multipartResolver" class=&qu

ssm框架下的文件上传和文件下载

最近在做一个ssm的项目,遇到了添加附件和下载的功能,在网上查了很多资料,发现很多都不好用,经过摸索,发现了一套简便的方法,和大家分享一下.1.文件上传前台页面使用了easyui,代码如下: <table> <tr> <td>附件</td> <td> <input class="easyui-filebox" type="file" name="file1" id="fi

使用springmvc框架实现多文件上传

需求;我们在添加用户的时候,需要上传员工的个人照片,还需要上传员工的身份证照片,这时候,就需要进行多文件的上传. 向数据库表smbms_user表中添加添加workpicpath alter table smbms_user add workPicPath varchar(200)  null DEFAULT NULL COMMENT '上传个人工作证照片存储路径':--默认是将新加的字段添加到了原来表中最后一个字段的后面. useradd.js useradd.jsp <%@ page lan