Загрузка больших файлов ASP.NET Core StreamContent и MultipartFormDataContentC#

Место общения программистов C#
Ответить
Гость
 Загрузка больших файлов ASP.NET Core StreamContent и MultipartFormDataContent

Сообщение Гость »


Я знаю, что существует множество ресурсов и ответов о загрузке больших файлов в веб-API ASP.NET Core, но мой вопрос очень конкретен, и я не смог найти ответа.

Я пытаюсь реализовать возможность загрузки больших файлов в проекте API ASP.NET Core 7. Разница в том, что я не использую веб-приложение в качестве пользовательского интерфейса, а приложение Winforms пытается загрузить файл.

Во всех ресурсах в Интернете упоминается использование MultipartReader, но я пытаюсь найти причину, требуется ли это, если вызов выполняется из настольного приложения Winforms.

Когда я делаю такой запрос с помощью StreamContent;

с использованием (var fileStream = File.OpenRead(sampleFilePath)) используя (varstreamContent = новый StreamContent(fileStream)) { var requestUrl = @"Документ/ЗагрузитьДокумент"; ответ вар = _httpClient.PostAsync(requestUrl,streamContent).Result; } Могу загрузить файл размером 1,5 Гб.

Я также могу использовать:

с использованием (var fileStream = File.OpenRead(sampleFilePath)) используя (varstreamContent = новый StreamContent(fileStream)) используя (var formData = новый MultipartFormDataContent()) { formData.Add(streamContent, "Файлы", "SampleDoc.pdf"); var requestUrl = @"Document/UploadStream"; ответ вар = _httpClient.PostAsync(requestUrl, formData).Result; } РЕДАКТИРОВАТЬ:

Действия контроллера: Для первого с streamContent

[HttpPost] общедоступный IActionResult UploadDocument() { вар filePath = PathHelper.GetPath(); используя (var fileStream = новый FileStream(filePath, FileMode.Create, FileAccess.Write, FileShare.None)) { Request.Body.CopyToAsync(fileStream).Wait(); } вернуть ОК(); } Для второго с MultipartReader

[HttpPost] [Мультипартформдата] [Дисаблеформвалуемоделбиндинг] общедоступная асинхронная задача UploadStream() { вар fileUploadSummary = ждут _fileService.UploadFileAsync(HttpContext.Request.Body, Request.ContentType); вернуть CreatedAtAction(nameof(UploadStream), fileUploadSummary); } ПРИМЕЧАНИЕ: реализации _fileService и UploadFileAsync взяты из этой ссылки: https://code-maze.com/aspnetcore-upload-large-files/ Мой вопрос: если оба могут загрузить файл, следует ли мне использовать второй вариант с MultipartReader, в чем его преимущество?

Мое исследование показало мне, что метод Add MultipartFormDataContent позволяет загружать несколько файлов. Является ли это одним из преимуществ? Во-вторых, на контроллере, который загружает документ, происходит проверка типа контента "multipart/form-data", что заставляет меня думать, что этот параметр необходим, если файл отправляется в форме с файл типа ввода, например:

Разница в том, что MultiPartReader требуется, когда файл отправляется с файлом типа ввода формы?
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»