データベースからいくつかのブロブを取得したとします。次に、それらをバイト配列に入れます。例えば:
Byte[] lol1=(Byte[])reader["data1"];
Byte[] lol2=(Byte[])reader["data2"];
これらのバイト配列をファイルとしてzipに書き込み、C#のブラウザからファイルとしてダウンロードするにはどうすればよいですか?
// わかりやすくするために編集
次のような「Manager.cs」ファイルの関連コード:
public Byte[] FileDownload(string userName)
{
try
{
MySqlDataReader reader = new MySqlCommand("SELECT veri FROM veriler WHERE kullanici_id = (SELECT id FROM uyeler WHERE kullanici_adi='" + userName + "')", con).ExecuteReader();
MemoryStream ms = new MemoryStream();
GZipStream gzs = new GZipStream(ms, CompressionMode.Compress);
while (reader.Read())
gzs.Write((Byte[])reader["veri"], 0, ((Byte[])reader["veri"]).Length);
return ms.ToArray();
}
catch (Exception)
{
return Encoding.UTF8.GetBytes(string.Empty);
}
}
次のような「DataDown.aspx.cs」ファイルの関連コード:
protected void download_Click(object sender, EventArgs e)
{
Response.AddHeader("Content-type", ContentType);
Response.AddHeader("Content-Disposition", "attachment; filename=Archive.zip");
Response.BinaryWrite(new Manager().FileDownload(Session["user"].ToString()));
Response.Flush();
Response.End();
}
唯一のファイルである .zip ファイルを返します。2 つのファイルである必要があります。また、この 1 つのファイルが破損しています。