form表单提交file文件传输失败
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了form表单提交file文件传输失败相关的知识,希望对你有一定的参考价值。
参考技术A form表单中上传图片,传输失败,原因:form元素设置属性enctype
enctype就是encodetype就是编码类型的意思。
multipart/form-data是指表单数据有多部分构成,既有文本数据,又有文件等二进制数据的意思。
需要注意的是:
默认情况下,enctype的值是application/x-www-form-urlencoded,不能用于文件上传,只有使用了multipart/form-data,才能完整的传递文件数据。
application/x-www-form-urlencoded不是不能上传文件,是只能上传文本格式的文件,multipart/form-data是将文件以二进制的形式上传,这样可以实现多种类型的文件上传。
jquery ajax 提交form表单 以及django后台接受
HTML
<form id="project_file_upload" enctype="multipart/form-data" > <div class="modal-body"> <!-- multiple 增加此属性,文件可以多选 --> <input type="file" name="file" id="file"> <input id = ‘num_id‘ name="id" type="hidden" value=""> </div> <div class="modal-footer"> <button type="button" class="btn btn-default" data-dismiss="modal">{% trans "Close" %}</button> <button class="btn btn-success" type="submit" id="submit_upload_b"><i class="icon-share"></i> 上传</button> </div> {% csrf_token %} </form>
js 代码
//文件上传函数 function dispalyfiletable(url) { var csrftoken = getCookie(‘csrftoken‘); $.ajax({ cache: false, type: ‘POST‘, data: new FormData($(‘#project_file_upload‘)[0]), url: url, traditional:true, dataType:‘json‘, processData: false, contentType: false, success: function(data) { console.log(data); }, beforeSend: function(xhr, settings) { xhr.setRequestHeader("X-CSRFToken", csrftoken); } }); }
django后台代码
form.py
from django import forms class UploadFileForm(forms.Form): file = forms.FileField() professionalfile = forms.FileField()
id = request.POST.get(‘id‘,‘‘) print(id) form = UploadFileForm(request.POST, request.FILES) file_obj = request.FILES.get(‘file‘,‘‘) #获取上传文件
以上是关于form表单提交file文件传输失败的主要内容,如果未能解决你的问题,请参考以下文章