Я пытаюсь загрузить много файлов за запрос, используя dropzone, и веб-API, используя .Net Core.
Для этого мы должны настроить Dropzone на отправку большого количества файлов за один запрос с помощью параметра uploadMultiple. По умолчанию dropzone отправляет один файл на запрос. Если вам нужно загрузить 10 файлов, он сделает 10 запросов. Я этого не хочу.
Если для uploadMultiple установлено значение true, dropzone добавит [] к имени входа. Например, допустим, что имя входа - Files. Когда uploadMultiple имеет значение true, оно становится Files [].
Чтобы читать файлы в .Net Core Web API, нам просто нужно создать контроллер, который получает чтение из IList из формы. Как это:
public ActionResult<MyResponse> Upload([FromForm] IList<IFormFile> Files)
Проблема
Проблема заключается в [] в названии. Dropzone отправляет файлы под именем:
Файлы [0],
Файлы [1] ... Файл [N]
Тогда связывание в .Net Core завершается неудачно, поскольку ожидается, что имя будет File. Я пытался изменить имя привязки на:
public ActionResult<MyResponse> Upload([FromForm(Name = "Files[]")] IList<IFormFile> Files)
Но тогда это не сработало. Когда я изменился на:
public ActionResult<MyResponse> Upload([FromForm(Name = "Files[0]")] IList<IFormFile> Files)
Работает для первой записи массива файлов.
Итак, я ищу способ создания шаблона имени «File [any_number]», отправленного Dropzone для привязки в IList .Net Core Web API.
Есть ли способ достичь этого?
Пока что, чтобы решить эту проблему, я читаю файлы прямо из запроса. Как это:
var files = HttpContext.Request.Form.Files;
Но я предпочитаю использовать альтернативу связывания.