第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

無法打開從 System.IO.Compression 命名空間創(chuàng)建的 zip 文件

無法打開從 System.IO.Compression 命名空間創(chuàng)建的 zip 文件

翻過高山走不出你 2023-07-20 15:04:03
我正在嘗試壓縮不同數(shù)量的文件,以便可以向用戶提供一個 zip 文件夾,而不必單擊多個錨標(biāo)記。我使用 asp.net core 3.1 中的 System.IO.Compression 命名空間來創(chuàng)建 zip 文件夾。這是我用來創(chuàng)建 Zip 文件夾的代碼。        public IActionResult DownloadPartFiles(string[] fileLocations, string[] fileNames)        {            List<InMemoryFile> files = new List<InMemoryFile>();            for (int i = 0; i < fileNames.Length; i++)            {                InMemoryFile inMemoryFile = GetInMemoryFile(fileLocations[i], fileNames[i]).Result;                files.Add(inMemoryFile);            }            byte[] archiveFile;            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.Fastest);                        using (Stream zipStream = zipArchiveEntry.Open())                        {                            zipStream.Write(file.Content, 0, file.Content.Length);                            zipStream.Close();                        }                    }                    archiveStream.Position = 0;                }                archiveFile = archiveStream.ToArray();            }            return File(archiveFile, "application/octet-stream");        }我嘗試壓縮的文件是遠程存儲的,因此我用這段代碼來獲取它們。InMemoryFile 是一個將文件名和文件字節(jié)組合在一起的類。使用 Ajax 調(diào)用 DownloadPartFiles 方法。我使用 javascript 獲取文件的遠程路徑及其各自的名稱,并將它們傳遞到 Ajax 調(diào)用中。
查看完整描述

1 回答

?
ITMISS

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)問題,所以如果有人知道未來的答案,我很想知道。


查看完整回答
反對 回復(fù) 2023-07-20
  • 1 回答
  • 0 關(guān)注
  • 226 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號