フィールドの1つにファイルがあるcouchbaseからオブジェクトを取得しています。ファイルは圧縮され、base64 でエンコードされます。
この文字列を解凍して元のファイルに戻すにはどうすればよいでしょうか?
次に、ASP.MVC 4 を使用している場合、ダウンロード可能なファイルとしてブラウザに送り返すにはどうすればよいですか?
元のファイルは Linux システムで作成され、Windows システム (C#) でデコードされます。
フィールドの1つにファイルがあるcouchbaseからオブジェクトを取得しています。ファイルは圧縮され、base64 でエンコードされます。
この文字列を解凍して元のファイルに戻すにはどうすればよいでしょうか?
次に、ASP.MVC 4 を使用している場合、ダウンロード可能なファイルとしてブラウザに送り返すにはどうすればよいですか?
元のファイルは Linux システムで作成され、Windows システム (C#) でデコードされます。
を使用Convert.FromBase64String
してバイトを取得し、解凍してから、 を使用Controller.File
してクライアントにファイルをダウンロードさせる必要があります。解凍するには、ある種の ZIP ライブラリを使用して zip ファイルを開く必要があります。.NET 4.5 の組み込みZipArchive
クラスが機能するはずです。または、別のライブラリを使用することもできます。SharpZipLibとDotNetZipの両方がストリームからの読み取りをサポートしています。
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 タイプを取得できます。