⽂件上传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)
视图函数
1def file_put(request):
2#获取到上传的⽂件对象
3    file_obj=('file_obj')
4#⽂件有⼀个name属性,获取⽂件名称字符串
5print(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 :
10for line in file_obj:
11            f.write(line)
12
13return 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 () {
inputtypefile不上传文件
8var 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) {
20if(response=='ok'){
21                        $('.msg').html('上传成功')
22                    }
23                }
24
25
26            })
27        })
28    })
29</script>
视图函数同上
⼆、contentType
contentType在请求头⾥,告诉浏览器是什么请求格式,
请求格式的分类
  urlencoded:默认的请求格式 use='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) 反序列化

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。