1 回答

TA貢獻1871條經(jīng)驗 獲得超8個贊
這是我用來創(chuàng)建一個包含文件的 zip 文件夾的修訂方法。
? ? ? public IActionResult DownloadPartFiles([FromBody] FileRequestParameters parameters)
? ? ? ? {
? ? ? ? ? ? List<InMemoryFile> files = new List<InMemoryFile>();
? ? ? ? ? ? for (int i = 0; i < parameters.FileNames.Length; i++)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? InMemoryFile inMemoryFile = GetInMemoryFile(parameters.FileLocations[i], parameters.FileNames[i]).Result;
? ? ? ? ? ? ? ? files.Add(inMemoryFile);
? ? ? ? ? ? }
? ? ? ? ? ? byte[] archiveFile = null;
? ? ? ? ? ? using (MemoryStream archiveStream = new MemoryStream())
? ? ? ? ? ? {
? ? ? ? ? ? ? ? using (ZipArchive archive = new ZipArchive(archiveStream, ZipArchiveMode.Create, true))
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? foreach (InMemoryFile file in files)
? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ZipArchiveEntry zipArchiveEntry = archive.CreateEntry(file.FileName, CompressionLevel.Optimal);
? ? ? ? ? ? ? ? ? ? ? ? using (MemoryStream originalFileStream = new MemoryStream(file.Content))
? ? ? ? ? ? ? ? ? ? ? ? using (Stream zipStream = zipArchiveEntry.Open())
? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? originalFileStream.CopyTo(zipStream);
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? archiveFile = archiveStream.ToArray();
? ? ? ? ? ? }
? ? ? ? ? ? return File(archiveFile, "application/octet-stream");
? ? ? ? }
我仍然不知道為什么以前的方法會出現(xiàn)問題,所以如果有人知道未來的答案,我很想知道。
添加回答
舉報