1

フィールドの1つにファイルがあるcouchbaseからオブジェクトを取得しています。ファイルは圧縮され、base64 でエンコードされます。

この文字列を解凍して元のファイルに戻すにはどうすればよいでしょうか?

次に、ASP.MVC 4 を使用している場合、ダウンロード可能なファイルとしてブラウザに送り返すにはどうすればよいですか?

元のファイルは Linux システムで作成され、Windows システム (C#) でデコードされます。

4

2 に答える 2

2

を使用Convert.FromBase64Stringしてバイトを取得し、解凍してから、 を使用Controller.Fileしてクライアントにファイルをダウンロードさせる必要があります。解凍するには、ある種の ZIP ライブラリを使用して zip ファイルを開く必要があります。.NET 4.5 の組み込みZipArchiveクラスが機能するはずです。または、別のライブラリを使用することもできます。SharpZipLibDotNetZipの両方がストリームからの読み取りをサポートしています。

public ActionResult MyAction()
{
    string base64String = // get from Linux system
    byte[] zipBytes = Convert.FromBase64String(base64String);
    using (var zipStream = new MemoryStream(zipBytes))
    using (var zipArchive = new ZipArchive(zipStream))
    {
        var entry = zipArchive.Entries.Single();
        string mimeType = MimeMapping.GetMimeMapping(entry.Name);
        using (var decompressedStream = entry.Open())
            return File(decompressedStream, mimeType);
    }
}

また、ファイルの MIME タイプも必要になります。これを使用MimeMapping.GetMimeMappingすると、最も一般的なタイプの MIME タイプを取得できます。

于 2013-09-24T15:45:48.983 に答える