问题
I have a REST API endpoint which receives zip file on .Net Core 1.1. I'm getting IFormFile from request like this
var zipFile = HttpContext.Request.Form.Files.FirstOrDefault();
And then I need to pass it to service method from .Net Standard 1.5, where IFormFile is not supported.
So the question is: how can I convert IFormFile to ZipFile or to some other type which is supported in Standard 1.5, or maybe there is some more proper way to operate with zip files? Thanks!
回答1:
IFormFile
is just a wrapper for the received file. You should still read the actual file do something about it. For example, you could read the file stream into a byte array and pass that to the service:
byte[] fileData;
using (var stream = new MemoryStream((int)file.Length))
{
file.CopyTo(stream);
fileData = stream.ToArray();
}
Or you could copy the stream into a physical file in the file system instead.
But it basically depends on what you actually want to do with the uploaded file, so you should start from that direction and the convert the IFormFile
into the thing you need.
If you want to open the file as a ZIP and extract something from it, you could try the ZipArchive constructor that takes a stream. Something like this:
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/c-sharp-iformfile-as-zipfile