31

いくつかのバイト配列データを使用してオンザフライで zip ストリームを作成し、MVC アクションを介してダウンロードしようとしています。

ただし、ダウンロードしたファイルを Windows で開くと、常に次の破損エラーが発生します。

ここに画像の説明を入力

そして、7zから抽出しようとすると、このエラーが発生します

ここに画像の説明を入力

ただし、7z から抽出されたファイルは破損していないことに注意してください。

以下は私ZipArchiveのコードです。

    private byte[] GetZippedPods(IEnumerable<POD> pods, long consignmentID)
    {
        using (var zipStream = new MemoryStream())
        {
            //Create an archive and store the stream in memory.                
            using (var zipArchive = new ZipArchive(zipStream, ZipArchiveMode.Create, true))
            {
                int index = 1;
                foreach (var pod in pods)
                {                        
                    var zipEntry = zipArchive.CreateEntry($"POD{consignmentID}{index++}.png", CompressionLevel.NoCompression);                       
                    using (var originalFileStream = new MemoryStream(pod.ByteData))
                    {
                        using (var zipEntryStream = zipEntry.Open())
                        {
                            originalFileStream.CopyTo(zipEntryStream);
                        }
                    }
                }
                return zipStream.ToArray();
            }
        }
    }

    public ActionResult DownloadPOD(long consignmentID)
    {
        var pods = _consignmentService.GetPODs(consignmentID);
        var fileBytes = GetZippedPods(pods, consignmentID);
        return File(fileBytes, MediaTypeNames.Application.Octet, $"PODS{consignmentID}.zip");
    }

ここで何が間違っていますか。

私は一日中これに苦労しているので、どんな助けでも大歓迎です。

前もって感謝します

4

5 に答える 5