Считывание большого файла с диска по частям для отправки в API .Чистое ядро
I have a large number of files that I need to send to an external API for processing. My project is a .net core API that receives a POST to my controller when a file needs to be processed. The information passed into the controller will have the location of the file to download. I need to download this file (some of these files can be 5 gig), then take this file and split it into chunks and post these chunks to outside API for processing. I am having trouble reading the file in chunks. The file will be saved locally so I have access to it, but I am having problems reading the chunks and POSTing them. How do you read large files in chunks in .NET core?
Спасибо.
Что я уже пробовал:
Я пробовал использовать поток.Read и StreamReader, но я продолжаю сталкиваться с проблемами с фрагментированием данных. Например, не хватает памяти или создается фрагмент без данных.
Richard Deeming
Возможно, Вам стоит взглянуть на пакет System.IO.Pipelines, который был разработан для такого рода вещей?
Системы.ИО.Трубопроводов: высокая производительность ввода-вывода в .Сеть | .Чистый блог[^]
Katghoti
По состоянию на январь 2019 года официальной поддержки чтения больших файлов кусками с помощью этой библиотеки не существует, и она была создана для сетевых случаев использования. Начиная с версии 2.1, нет никакой поддержки для каких-либо точек пути файла.
Richard Deeming
Это позор.
Значит, Вы читаете файл с локального компьютера? Это должно быть довольно легко сделать с помощью Stream
класс. Где ты застрял?
Katghoti
Я смотрю на класс Stream с помощью readblockasync. Я посмотрю, куда это приведет меня, и, возможно, вернусь для конкретных вопросов. Спасибо за помощь.
Katghoti
Кроме того, я должен упомянуть, что это двоичный файл (MP4), который я читаю. Вот тут-то я и застрял.
Richard MacCutchan
Все файлы являются двоичными (потоки байтов). Только когда их содержание интерпретируется приложением, двоичный файл становится полезной информацией.