假设我从数据库中得到了一些 blob。然后我把它们放在字节数组中。例如:
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 文件,该文件是其中唯一的文件。它必须是两个文件。此外,这一文件已损坏。