Загрузка файла jquery с использованием formData не работает

Я пытаюсь загрузить простой файл из tar с помощью jquery. Но я получаю неверный формат архива с моего сервера. Любая помощь будет оценена.

PS: я не могу изменить код сервера. Это из другой команды.

Редактировать 1: Ответ от Chrome: введите описание изображения здесь Мой HTML:

<!DOCTYPE html>
<html>
<body>

<form method="POST" enctype="multipart/form-data" id="testFileUpload">
  <input type="file" name="selectedFile"/>
  <input type="submit" value="Submit" id="btnSubmit"/>
</form>

</body>
</html>

Мой JS:

 $(document).ready(function () {
  $("#btnSubmit").click(function (event) {
          event.preventDefault();

        var form = $('#testFileUpload')[0];
    var data = new FormData(form);

    $.ajax({
      type: "POST",
      enctype: 'multipart/form-data',
      url: g_url_version+'/hosting/apps',
      data: data,
      processData: false,
      contentType: false,
      timeout: 600000,
      beforeSend: function (xhr) {
        xhr.setRequestHeader('X-Token-Id', getCookieToken());
        xhr.setRequestHeader('X-Connector-Id', 'TestSeed');
      },
      success: function (data) {
        console.log("SUCCESS : ", data);
      },
      error: function (e) {
        console.log("ERROR : ", e);
      }
    });

  });

});

введите описание изображения здесь

Я могу загрузить файл, используя почтальон через Binary, как показано ниже, но не через formData. введите описание изображения здесь

введите описание изображения здесь

2 ответа

Связывайте обработчик события submit, а не нажимайте кнопку, так как вам нужно предотвратить отправку формы по умолчанию и отправить ручной вызов ajax

 $("#btnSubmit").click(function (event) {

в

  $("#testFileUpload").on('submit', function(event) {

и просто использовать this чтобы получить объект формы внутри него

 var form = this;

скопируйте код ниже, он должен загрузить файл правильно, если у вас есть простой php файл с

print_r($_POST);
print_r($_FILES);

это должно показать ниже в консоли

SUCCESS :  Array
(
    [userid] => oemr@omer.com
    [filelabel] => 
)
Array
(
    [file] => Array
        (
            [name] => IMG_20160521_092941676.jpg
            [type] => image/jpeg
            [tmp_name] => F:\xampp\tmp\phpD881.tmp
            [error] => 0
            [size] => 4867779
        )

)

$(document).ready(function() {
  $("#testFileUpload").on('submit', function(event) {

    event.preventDefault();

    var form = this;
    var data = new FormData(form);

    $.ajax({
      type: "POST",
      enctype: 'multipart/form-data',
      url: g_url_version + '/hosting/apps',
      data: data,
      processData: false,
      contentType: false,
      timeout: 600000,
      beforeSend: function(xhr) {
        xhr.setRequestHeader('X-Token-Id', getCookieToken());
        xhr.setRequestHeader('X-Connector-Id', 'TestSeed');
      },
      success: function(data) {
        console.log("SUCCESS : ", data);
      },
      error: function(e) {
        console.log("ERROR : ", e);
      }
    });

  });

});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form method="POST" enctype="multipart/form-data" id="testFileUpload">
  <input type="file" name="selectedFile" />
  <input type="submit" value="Submit" id="btnSubmit" />
</form>

Вы можете попробовать это следующим образом: Обновите ваш обработчик кликов на; Jquery:

event.preventDefault();
var data = new FormData();
data.append("file",$('input[name="selectedFile"]').files[0]);
// your ajax call looks fine. Use the same.
$("#contactform").validate({
    errorClass: "errors_lable",
    rules: {
        email: {
            required: true,
            email: true,
        },
    },
    messages: {
        email: {
            required: "Please enter email address.",
            email: "Please enter Valid email address.",
        },
    },
    submitHandler: function(form) {
        try {
            var formData = new FormData();
            formData.append("LogoName", $('input[type=file]')[0].files[0]);
            formData.append("email", isCollege);
            waitingDialog.show('Please Wait While Processing...');
            $.ajax({
                type: "POST",
                dataType: 'JSON',
                url: "https://code0.ww.com/index.php/...../RegisterSchool",
                data: formData,
                processData: false,
                contentType: false,
                success: function(data) {
                    waitingDialog.hide('Please Wait While Processing...');
                    if (data.ResponseHeader.response_type == 'success') {
                        //                          $('#msg').show();
                        //                          $('#msg').html("<span style='color:#b9efb9'><b>Thankyou For Register</b></span>");
                        alert('Thankyou For Register');
                    } else if (data.ResponseHeader.response_type == 'error') {
                        //$('#msg').show();
                        //$('#msg').html("<span style='color:red'><b>Opps! There is some  error, Please Try again latter.</b></span>");
                        alert('Somithing Went Wrong Please Try Again Latter');
                    }
                },
                error: function(data) {
                    alert('Somithing Went Wrong Please Try Again Latter');
                }
            });
        } catch (err) {
            console.log(err);
        }
    }
});
Другие вопросы по тегам