C# IFormFile как ZipFile
У меня есть конечная точка API REST, которая получает ZIP-файл на.Net Core 1.1. Я получаю IFormFile из запроса, как это
var zipFile = HttpContext.Request.Form.Files.FirstOrDefault();
И тогда мне нужно передать его в сервисный метод из.Net Standard 1.5, где IFormFile не поддерживается.
Таким образом, вопрос заключается в следующем: как я могу преобразовать IFormFile в ZipFile или в какой-либо другой тип, который поддерживается в Standard 1.5, или, может быть, есть более подходящий способ работы с zip-файлами? Спасибо!
1 ответ
IFormFile
это просто оболочка для полученного файла. Вы все равно должны прочитать фактический файл и что-то с этим сделать. Например, вы можете прочитать поток файлов в байтовый массив и передать его службе:
byte[] fileData;
using (var stream = new MemoryStream((int)file.Length))
{
file.CopyTo(stream);
fileData = stream.ToArray();
}
Или вместо этого вы можете скопировать поток в физический файл в файловой системе.
Но это в основном зависит от того, что вы действительно хотите сделать с загруженным файлом, поэтому вы должны начать с этого направления и преобразовать IFormFile
в то, что вам нужно.
Если вы хотите открыть файл в формате ZIP и извлечь из него что-то, вы можете попробовать ZipArchive
Конструктор, который принимает поток. Что-то вроде этого:
using (var stream = file.OpenReadStream())
using (var archive = new ZipArchive(stream))
{
var innerFile = archive.GetEntry("foo.txt");
// do something with the inner file
}