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文件传输失败的主要内容,如果未能解决你的问题,请参考以下文章

form表单提交提交文件,并接受后端传过来的数据

ajax form表单提交 input file中的文件

Linux curl 模拟form表单提交信息和文件

jquery.form.js提交 input file中的文件

如何判断form表单是不是提交成功

form表单提交页面不发生跳转