文件上传&ContentType请求格式

一、文件上传

1、通过表单形式上传文件

1 <form action=' /file_put/' method='post' enctype=' multipart/form-data'>                                                                 
2     文件名<input type='file' name='file_obj'>
3              <input type='submit'>
4 </form>

表单上传文件需要设置属性:enctype

url.py 文件路径如下:

  path('file_put',views.file_put)

视图函数

 1 def file_put(request):
 2     #获取到上传的文件对象
 3     file_obj=request.FILES.get('file_obj')
 4     #文件有一个name属性,获取文件名称字符串
 5     print(file_obj.name)
 6     path=file_obj.name
 7   #拼接路径
 8     path=os.path.join(settings.BASE_DIR,'media','img',path)
 9     with open(path,'wb') as f :
10         for line in file_obj:
11             f.write(line)
12     
13     return HttpResponse('ok')

2、通过Ajax上传文件

 1 文件<input type="file" name="file_obj" id="file">
 2 <input type="button" class="filbtn" value="提交">
 3 <p class="msg"></p>
 4 
 5 <script>
 6     $(function () {
 7         $('.filbtn').click(function () {
 8             var formdata=new FormData();
 9             //拼键值对('file_obj':'$('#file')[0].files[0]')
10             //$('#file')[0].files[0]是根据id找到文件
11             formdata.append('file_obj',$('#file')[0].files[0]);
12             $.ajax({
13                 url:'/app01/file_put/',
14                 type:'post',
15                 // Ajax上传文件必备参数
16                 processData: false ,    // 不处理数据
17                 contentType: false,    // 不设置内容类型
18                 data:formdata,
19                 success:function (response) {
20                     if(response=='ok'){
21                         $('.msg').html('上传成功')
22                     }
23                 }
24 
25 
26             })
27         })
28     })
29 </script>

视图函数同上

 二、contentType

contentType在请求头里,告诉浏览器是什么请求格式,

请求格式的分类

  urlencoded:默认的请求格式 ues='bart'&pwd='123'

  formdata:上传文件

  json格式:{‘use’:'Andey','pwd':123}

 1 $.ajax({
 2     url:'',
 3     type:post,
 4     contentType:'json',
 5     #序列化发送
 6     data:JSON.stringify({
 7         key1:value,
 8         key2:value,
 9     
10     })
11     
12      processData: false ,    // 不处理数据
13      contentType: false,    // 不设置内容类型
14 
15 
16 })

注:

  Django 只解析URLencoded格式的数据
  发送json数据只能手动解
  解析json数据:
  data=request.body.decode('utf8)解码
  json_data=json.loads(data) 反序列化

转载于:https://www.cnblogs.com/liaopeng123/p/9879869.html

  • 1
    点赞
  • 0
    评论
  • 2
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
String filePath=""; File file=new File(filePath); //解决乱码问题 String filename=URLEncoder.encode(file.getName(),"utf-8"); //重置输出流 response.reset(); Response.AddHeader("Content-Disposition", "attachment;filename="+filename);//设置文件名 response.addHeader("Content-Length",file.length);//设置下载文件大小 response.setContentType("application/octet-stream");//设置文件类型 OutputStream toClient=new BufferedOuntputStream( response.getOutputStream() );//获取二进制输出流 //读取文件数据 InputStream fis=new BufferedInputStream(new FileInputStream(filePath)); byte[] buffer=new byte[file.length()]; fis.read(buffer); fis.close(); //输出文件数据 toClient.write(buffer); toClient.close(); 文件类型如下: ".*"="application/octet-stream" ".001"="application/x-001" ".301"="application/x-301" ".323"="text/h323" ".906"="application/x-906" ".907"="drawing/907" ".a11"="application/x-a11" ".acp"="audio/x-mei-aac" ".ai"="application/postscript" ".aif"="audio/aiff" ".aifc"="audio/aiff" ".aiff"="audio/aiff" ".anv"="application/x-anv" ".asa"="text/asa" ".asf"="video/x-ms-asf" ".asp"="text/asp" ".asx"="video/x-ms-asf" ".au"="audio/basic" ".avi"="video/avi" ".awf"="application/vnd.adobe.workflow" ".biz"="text/xml" ".bmp"="application/x-bmp" ".bot"="application/x-bot" ".c4t"="application/x-c4t" ".c90"="application/x-c90" ".cal"="application/x-cals" ".cat"="application/vnd.ms-pki.seccat" ".cdf"="application/x-netcdf" ".cdr"="application/x-cdr" ".cel"="application/x-cel" ".cer"="application/x-x509-ca-cert" ".cg4"="application/x-g4" ".cgm"="application/x-cgm" ".cit"="application/x-cit" ".class"="java/*" ".cml"="text/xml" ".cmp"="application/x-cmp" ".cmx"="application/x-cmx" ".cot"="application/x-cot" ".crl"="application/pkix-crl" ".crt"="application/x-x509-ca-cert" ".csi"="application/x-csi" ".css"="text/css" ".cut"="application/x-cut" ".dbf"="application/x-dbf" ".dbm"="application/x-dbm" ".dbx"="application/x-dbx" ".dcd"="text/xml" ".dcx"="application/x-dcx" ".der"="application/x-x509-ca-cert" ".dgn"="application/x-dgn" ".dib
©️2021 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值