Мне нужно создать метод для загрузки нескольких файлов.
Вот моя бэкэнд-модель, которая передается как public void ImageUpload(IEnumerable<ImageModel> images).
public class ImageModel
{
public int EntityId { get; set; }
public string FileName { get; set; }
public string AltText { get; set; }
public byte[] Content { get; set; }
public int ImageRoomId { get; set; }
}
Из js я отправляю данные формы и выглядит так
Но я получаю System.IndexOutOfRangeException: Index was outside the bounds of the array.
Не могу понять, в чем ошибка. Нужно ли мне использовать какой-либо другой тип контента?
ОБНОВИТЬ
[WebMethod]
public string developmentimageupload(ImageModel[] file)
{
return "Ok";
}
JS:
var formData = new FormData();
var formFields = container.querySelectorAll('input[type=text], select');
for(i = 0; i < fileList.length; i++){
formData.set('File[' + i + '].Content', fileList[i]);
formData.set('File[' + i + '].FileName', fileList[i].name);
}
for(var i = 0; i < formFields.length; i++){
formData.set(formFields[i].name, formFields[i].value);
}
$.ajax({
url: window.siteAdminProperties.Feeds.DevelopmentBulkImagesUploadUrl,
type: 'POST',
data: formData,
processData: false,
contentType: false,
success: function (data) {
$('.js-images-uploader').hide();
$('.js-images-uploaded').show();
}
});
а также предоставьте код js
@YoniV обновили вопрос
Имеет ли Content значение в веб-методе?
@SeanT, если я удалю параметры из метода, все работает нормально, и я вижу файлы бота и FormData. Иначе он даже не сможет попасть внутрь метода. Вырезаю шаг привязки модели.
@StNickolas, вы можете использовать класс FileReader в javascript для преобразования файлов в base64. Затем измените тип данных содержимого на массив строк. Я немного занят, чтобы опубликовать ответ на данный момент, но на этом сайте есть много примеров
@SeanT Я не уверен, что это причина исключения. Я думаю, что мне нужно выяснить, как правильно назвать данные формы, чтобы связыватель модели мог выполнять эту работу.
Только что заметили, что у вас есть заглавная буква F для вашего файлового объекта на стороне клиента и строчная буква в качестве параметра веб-метода?
@SeanT да, если я установил метод в случае верблюда, он говорит, что неправильная подпись метода
Итак, вы заменили ImageModel[] file на ImageModel[] File, и это не сработало? Попробуйте установить тип контента как multipart/form-data
@SeanT пробовал оба, не сработало (
Вам нужно отправлять файлы как двоичные? а как насчет HttpPostedFileBase или Base64?
@SeanT нет смысла загружать несколько файлов с дополнительными данными. HtmlPostedFile в порядке. В любом случае, в настоящее время я реализовал ручное сопоставление запроса с моей моделью в качестве временного решения. Все еще ищем правильное решение для привязки модели
Я не уверен, что вы имеете в виду, просто сделайте HtmlPostedFile списком, и он будет обрабатывать несколько





Можете ли вы поделиться кодом внутреннего метода, который действительно обрабатывает запрос?