Загрузка файлов WebMethod

Мне нужно создать метод для загрузки нескольких файлов. Вот моя бэкэнд-модель, которая передается как 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 я отправляю данные формы и выглядит так

Загрузка файлов WebMethod

Но я получаю 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();
    }
});

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

JonyVol 07.12.2018 10:14

а также предоставьте код js

Hitesh Anshani 07.12.2018 10:49

@YoniV обновили вопрос

StNickolas 07.12.2018 11:18

Имеет ли Content значение в веб-методе?

Sean T 07.12.2018 11:27

@SeanT, если я удалю параметры из метода, все работает нормально, и я вижу файлы бота и FormData. Иначе он даже не сможет попасть внутрь метода. Вырезаю шаг привязки модели.

StNickolas 07.12.2018 11:34

@StNickolas, вы можете использовать класс FileReader в javascript для преобразования файлов в base64. Затем измените тип данных содержимого на массив строк. Я немного занят, чтобы опубликовать ответ на данный момент, но на этом сайте есть много примеров

Sean T 07.12.2018 12:16

@SeanT Я не уверен, что это причина исключения. Я думаю, что мне нужно выяснить, как правильно назвать данные формы, чтобы связыватель модели мог выполнять эту работу.

StNickolas 10.12.2018 05:36

Только что заметили, что у вас есть заглавная буква F для вашего файлового объекта на стороне клиента и строчная буква в качестве параметра веб-метода?

Sean T 10.12.2018 10:57

@SeanT да, если я установил метод в случае верблюда, он говорит, что неправильная подпись метода

StNickolas 10.12.2018 13:07

Итак, вы заменили ImageModel[] file на ImageModel[] File, и это не сработало? Попробуйте установить тип контента как multipart/form-data

Sean T 10.12.2018 13:18

@SeanT пробовал оба, не сработало (

StNickolas 11.12.2018 05:37

Вам нужно отправлять файлы как двоичные? а как насчет HttpPostedFileBase или Base64?

Sean T 11.12.2018 13:50

@SeanT нет смысла загружать несколько файлов с дополнительными данными. HtmlPostedFile в порядке. В любом случае, в настоящее время я реализовал ручное сопоставление запроса с моей моделью в качестве временного решения. Все еще ищем правильное решение для привязки модели

StNickolas 11.12.2018 14:00

Я не уверен, что вы имеете в виду, просто сделайте HtmlPostedFile списком, и он будет обрабатывать несколько

Sean T 11.12.2018 14:34
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
14
74
0

Другие вопросы по теме