在Ajax表单中上传文件只发送名称,不发送文件数据

Upload file in Ajax Form only sends name, not file data

本文关键字:文件 数据 表单 Ajax      更新时间:2023-09-26

好吧,我被难住了。我有一个ajax方法:

function check_empty() {
    if (document.getElementById('name').value == "" || document.getElementById('email').value == "" || document.getElementById('msg').value == "") {
      alert("Fill All Fields !");
    } else {
      //alert("Will submit form");
      // e.preventDefault();
      $('#spinner').show();
      $('#quote_form').hide();
      $('#submit').hide();
      var formData = new FormData();
      formData.append("file", $("#resume").val());
      $.ajax({
        type: 'post',
        url: '/contact_post.php',
        data: formData,
        success: function(html) {
          alert('Enquiry Submitted. Thank You!');
        },
        error: function(xhr, status, error) {
          var jsonResponseText = $.parseJSON(xhr.responseText);
          var message = '';
          alert('could not submit form: ' + jsonResponseText['message']);
        },
        //Options to tell jQuery not to process data or worry about content-type.
        processData: false,
        contentType: false
      });
    }

和请求参数在firefox下说:----------------------------- 4894670511610358147552973488附加:格式;name = "文件"

test.pdf----------------------------- 4894670511610358147552973488——

但是实际的文件数据在哪里?我似乎不能"发送文件",我有PHP在另一端接收它

使用ajax发布文件时,请确保获得对该文件的有效引用。通常看起来像:

formData.append("file", document.getElementById("resume").files[0]);

另外,您可能需要设置您的内容类型来处理文件,因此类似于:

ajaxRequest.setRequestHeader("Content-Type", "multipart/form-data");