Ваш параметр пуст, потому что вы отправляете не массив файлов, а только один файл. Следовательно, привязка не выполняется, и вы получаете нулевое значение. Акт чанкинга (который вы даже не делаете) не равняется IEnumerable<IFormFile>
; это все еще просто IFormFile
.
Хотя вам нужно отправить как multipart/form-data
, потому что вы отправляете и файл, и другие данные публикации, я думаю, вы не понимаете, что это на самом деле делает. Это просто означает, что тело запроса содержит несколько различных типов MIME, , а не - это означает, что он загружает файл в несколько частей, что, по-вашему, и делает.
Фактический процесс потоковой загрузки происходит на стороне сервера. Речь идет о том, как сервер выбирает обработку загружаемого файла, а не о том, как пользователь загружает его. Более конкретно, любой тип привязки модели, в частности к IFormFile
, приведет к тому, что файл будет сначала помещен в буфер на диск, а затем передан в ваши действия. Другими словами, если вы принимаете IFormFile
, вы уже проиграли битву. Он уже полностью передан с клиента на ваш сервер.
Документы ASP.NET Core показывают, как на самом деле выполнять потоковую загрузку, и неудивительно, что здесь задействовано немало кода, которого у вас нет в настоящее время. По сути, вам нужно полностью отключить привязку модели в действии и вручную проанализировать тело запроса, стараясь на самом деле разделить чтение из потока и не делать что-то, что заставит все это целиком зайти в память.