Django

一:form表单标签的文件上传

1: 浏览器:

html文件

1<h4>form文件上传</h4> 2<form action="/file_put/" method="post" enctype="multipart/form-data"> 3 {% csrf_token %} 4 姓名<input type="text" name="user"> 5 文件<input type="file" name="file_obj"> 6 <input type="submit"> 7</form>

2:服务端:

urls.py

path('file_put/', views.file_put),

views.py

1def file_put(request): 2 print(request.POST) #<QueryDict: {'csrfmiddlewaretoken': ['Cng1EW8TV1sbsknKXTQfsJHeGkvStPI33d9KNBkkur39tsuG68xROGmyZ9hZkcap'], 'user': ['lilz']}> 3 print(request.FILES) #<MultiValueDict: {'file_obj': [<InMemoryUploadedFile: 1.doc (application/msword)>]}> 4 file_obj=request.FILES.get('file_obj') #获取到文件对象 5 6 # 文件对象有一个name属性,获取文件名称字符串 7 print(file_obj.name) 8 path=file_obj.name #文件名 9 10 from homework import settings #setting文件中有绝对路径 11 import os 12 path=os.path.join(settings.BASE_DIR,"files","img",path) #拼文件名的路径 13 with open(path,"wb") as f: #写入文件 14 for line in file_obj: 15 f.write(line) 16 17 return HttpResponse('ok')

效果:

二:ajax文件上传

服务端和form表单的形式一样,不变

客户端浏览器:

1<h4>4 Ajax形式的文件上传</h4> 2 3<div> 4 姓名<input type="text" id="user"> 5 文件<input type="file" name="file_obj" id="file"> 6 <input type="button" class="filebtn" value="提交"> 7 <p class="msg"></p> 8</div> 9 10 11<script> 12 {#发送文件#} 13 $('.filebtn').click(function () { 14 var formdata=new FormData(); //实例化,formdata格式 15 //$('#file')[0].file[0]获取文件对象 16 formdata.append("file_obj",$("#file")[0].files[0]); 17 formdata.append("user",$("#user").val()); 18 19 $.ajax({ 20 url:'/file_put/', 21 type:'post', 22 data:formdata, 23 24 //ajax 上传文件必备参数 25 processData: false , // 不处理数据 26 contentType: false, // 不设置内容类型 27 success:function (response) { 28 console.log(response) 29 if (response=="ok"){ 30 $(".msg").html("提交成功!") 31 } 32 } 33 }) 34 }); 35 36######################------------processData---------################ 37 38processData:声明当前的data数据是否进行转码或预处理,默认为true,即预处理;iffalse39 那么对data:{a:1,b:2}会调用json对象的toString()方法,即{a:1,b:2}.toString() 40 ,最后得到一个[object,Object]形式的结果。 41 42######################------------contentType---------################ 43 44contentType:默认值: "application/x-www-form-urlencoded"。发送信息至服务器时内容编码类型。 45 用来指明当前请求的数据编码格式;urlencoded:?a=1&b=2;如果想以其他方式提交数据, 46 比如contentType:"application/json",即向服务器发送一个json字符串: 47 $.ajax("/ajax_get",{ 48 49 data:JSON.stringify({ 50 a:22, 51 b:33 52 }), 53 contentType:"application/json", 54 type:"POST", 55 56 }); //{a: 22, b: 33} 57 58 注意:contentType:"application/json"一旦设定,data必须是json字符串,不能是json对象 views.py: json.loads(request.body.decode("utf8")) 59 60 61######################------------traditional---------################ 62 63traditional:一般是我们的data数据有数组时会用到 :data:{a:22,b:33,c:["x","y"]}, 64 traditional为false会对数据进行深层次迭代;

效果:

补充:

1print(request.body) # 原始的请求体数据 2print(request.GET) # GET请求数据 3print(request.POST) # POST请求数据 4print(request.FILES) # 上传的文件数据
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

tp3.2读取excel文件

使用PHPExcel时,首先要下载PHPExcel并放在ThinkPHP/Library/Vendor下1.创建html文件(文件上传按钮)<formaction"{:U('控制器名/方法名')}"method"post"enctype"multipart/formdata" 

java中使用restful web service来传输文件

【1】上传大文件:前端页面:1)同步上传:<html<body<formaction"http://localhost:8081/webProject/api/file/uploadFile"method"post"enctype"multipart/form

PHP导入导出EXCELl,CSV

PHP导入导出Excel,CSVHTML<formaction"{:U('Admin/Unit/importcsv')}"method"post"name"myform"id"myform"enctype"multipart/formdata"<input