Javascript AJAX Загрузить файл - PullRequest
0 голосов
/ 05 марта 2019

Я написал скрипт на JavaScript для обработки перетаскивания файлов.Когда вызывается прослушивание «drop», файл захватывается с использованием dataTransfer.files (функция приведена ниже).

    event.preventDefault(); 
    event.stopPropagation();
    console.log(event.dataTransfer.files[0]);
    uploadFiles = event.dataTransfer.files; 
    fileBoxUpLoad(uploadFiles);

Журнал консоли показывает, что файл записывается правильно

File {name: "Changi - 2016.pdf", lastModified: 1473382409845, lastModifiedDate: Fri Sep 09 2016 10:53:29 GMT+1000 (Australian Eastern Standard Time), webkitRelativePath: "", size: 197754, …}

Функция fileBoxUpLoad вызывается, и когда код попадает в xmlhttp.send, он выдает ошибку

Неожиданный токен o в JSON в позиции 1 в JSON.parse ()

var formData = new FormData();
    for(var x=0; x<=item.length; x++) 
    {
        formData.append('file', item[x]);
    }

    var xmlhttps = new XMLHttpRequest();
    xmlhttps.open("POST", uri);
    xmlhttps.setRequestHeader('Content-Type', file.type);
    xmlhttps.send(formData);

Я понимаю, что это означает, что я пытаюсь проанализировать объект Javascript, когда я не думаю, что нахожусь, и я не могу увидеть, где мой код отличается от всех учебников, которые я прочитал.Любой совет?Спасибо !!

1 Ответ

0 голосов
/ 05 марта 2019

Вы можете сделать что-то вроде этого

//declare an array for store the files
var uploadedFiles = [];

//then get files by using their id or maybe you can loop through on your control
var file = $('input[name=YourControlName]').get(0).files[0];

//push the files to array
uploadedFiles.push(file);

//declare form data and append files to form data
var formData = new FormData();   
for (var i = 0; i < uploadedFiles.length; i++) {
    formData.append("file" + i, uploadedFiles[i]);
}

//then you can post to via ajax and get on api via request files
$.ajax({
type: "post",
url: "",
contentType: false,
data: formData,
processData: false,
success: function (result) {
    alert(result);
},
failure: function (e) {
    alert(e);
}

});

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...