У меня проблема с загрузкой файлов с помощью jQuery Ajax и веб-API. Когда я делаю POST для своего API, я не загружаю файлы в свой контроллер.Загрузка нескольких файлов в Web Api с помощью jQuery Ajax
В моем HTML У меня есть несколько входов файлов с классом = "файл", как это:
<form id="edit" enctype="multipart/form-data">
<input class="file" type="file" name="field_custom_file" accept='image/*' />
<input class="file" type="file" name="field_custom_file" accept='image/*' />
<input class="file" type="file" name="field_custom_file" accept='image/*' />
</form>
В addittion, у меня есть кнопка, которая выполняет функцию JavaScript:
function send() {
var files = $('.file')[0].files;
if (files.length > 0) {
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",
url: '/api/tripgroups',
contentType: false,
processData: false,
data: data,
success: function (result) {
toastr.success('Trip Group was updated!');
},
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);
},
enctype: 'multipart/form-data',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
});
} else {
alert("This browser doesn't support HTML5 file uploads!");
}
}
}
Наконец, в моем веб-контроллере api, если я попытаюсь получить доступ к файлам HttpContext.Current.Request.Files, я получаю пустую коллекцию, и если я попытаюсь получить доступ к контенту вроде этого:
var streamProvider = new MultipartFormDataStreamProvider("images");
await Request.Content.ReadAsMultipartAsync(streamProvider);
Тогда я получаю эту ошибку:
Invalid 'HttpContent' instance provided. It does not have a content type header starting with 'multipart/'. Parameter name: content
Спасибо заранее.
Вы пытались установить тип контента? : contentType: false – rick
Plz заменить 'contentType: false' с' contentType: 'multipart/form-data'' – rt2800
да, я сделал. Я также попытался добавить dataType: 'json' –