我有一个REST端点,它在.Net Core1.1上接收zip文件。我从这样的请求中得到了IFormFile
var zipFile = HttpContext.Request.Form.Files.FirstOrDefault();然后,我需要将它传递给.Net标准1.5中的服务方法,在那里不支持IFormFile。
因此,问题是:如何将IFormFile转换为ZipFile或标准1.5中支持的其他类型,或者有更合适的方式处理zip文件?谢谢!
发布于 2017-09-14 13:13:30
IFormFile只是接收到的文件的包装器。您仍然应该阅读实际的文件,对此做些什么。例如,可以将文件流读入字节数组并将其传递给服务:
byte[] fileData;
using (var stream = new MemoryStream((int)file.Length))
{
file.CopyTo(stream);
fileData = stream.ToArray();
}或者您可以将流复制到文件系统中的物理文件中。
但是这基本上取决于您实际想要对上传的文件做什么,所以您应该从这个方向开始,并将IFormFile转换为您需要的东西。
如果您想以ZIP的形式打开文件并从中提取某些内容,您可以尝试接受流的 constructor。就像这样:
using (var stream = file.OpenReadStream())
using (var archive = new ZipArchive(stream))
{
var innerFile = archive.GetEntry("foo.txt");
// do something with the inner file
}https://stackoverflow.com/questions/46220025
复制相似问题