⽂件上传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小时内删除。
发表评论