загрузить файл в javascript и отправить файл через API

-3

Я пытаюсь загрузить файл и отправить его через api как файл. Но не получается работать. Вот мой использованный для загрузки и отправки моего файла в api. Но это, скорее всего, относится к сообщению об ошибке.

$(document).on('change', '#txtUploadFile', function(e){

    var files = e.target.files;
    if (files.length > 0) {
       if (this.value.lastIndexOf('.xlsx') === -1){
          alert('Only ods files are allowed!');
          this.value = '';
          return;
       }
       if (window.FormData !== undefined) {
           var data = new FormData();
           for (var x = 0; x < files.length; x++){
               data.append("file" + x, files[x]);
           }

           $.ajax({
               type: "POST",
               contentType: "multipart/form-data",
               url: 'http://localhost/clicportaltest/rest/clicadmin/uploadExcel',

               data:{file:file},
               success: function(result) {
                   console.log(result);
               },
               error: function (xhr, status, p3, p4){
                   var err = "Error " + " " + status + " " + p3 + " " + p4;
                   if (xhr.responseText && xhr.responseText[0] == "{")
                       err = JSON.parse(xhr.responseText).Message;
                       console.log(err);
                    }
                });
        } else {
            alert("This browser doesn't support HTML5 file uploads!");
          }
     }
});
  • 0
    Какое сообщение об ошибке вы получаете?
  • 0
    Как вы ожидаете, чтобы закодировать ваши файлы в формате JSON? Или, скорее, в каком формате сервер ожидает файлы?
Показать ещё 1 комментарий
Теги:

2 ответа

-1
Лучший ответ
$(function(){
$('#submitUpload').on('click', function(){
    var file = document.getElementById("upload").files[0];
    var form = new FormData();
    form.append("file", file);

    var settings = {
      "async": true,
      "crossDomain": true,
      "url": "http://localhost/clicportaltest/rest/clicadmin/uploadExcel",
      "method": "POST",
      "processData": false,
      "contentType": false,
      "mimeType": "multipart/form-data",
      "data": form
    };

    $.ajax(settings).done(function (response) {
      console.log(response);
    });
  });
});
0

Вы не можете JSON.stringify data потому что FormData не имеет toJSON(), поэтому он рассматривается как простой объект, результатом которого является "{}".

Вы можете либо реализовать свой собственный метод FormData.prototype.toJSON либо просто преобразовать data в строку или простой объект в обработчик. Как форматированное строковое представление data должно быть полностью зависит от того, как его API ожидает.

  • 0
    я изменил код сейчас, но не отвечаю на ajax сейчас
  • 0
    @Midhun - Ну, вы не изменили код таким образом, чтобы это имело смысл или способом, который предложил Микаэль.
Показать ещё 8 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню