【发布时间】:2019-03-01 21:38:06
【问题描述】:
我有一个 asp.net 网页,用户可以在其中选择网格中的多个项目。 当他们单击下载按钮时,他们应该能够根据所选网格项目的 id 将多个 pdf 作为 zip 文件下载。 PDF 以 blob 形式存储在 Oracle 数据库中。
我能够检索单个 blob 并在浏览器中将其显示为 pdf。 但是我很难弄清楚如何将多个 blob 作为 pdf 文件放入 zipfile 中,然后下载所述 zipfile。 如果可能,我想使用 System.IO.Compression 库。
这是我的代码现在的样子,显示单个 pdf:
OracleBlob oBlob = null;
byte[] bBlob = null;
using (OracleDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
sFileId = reader.GetInt32(0).ToString();
oBlob = reader.GetOracleBlob(1);
if (!oBlob.IsNull)
{
bBlob = new byte[oBlob.Length];
oBlob.Read(bBlob, 0, (int)oBlob.Length);
}
}
}
if (bBlob != null)
{
HttpContext.Current.Response.ContentType = "application/pdf";
HttpContext.Current.Response.AddHeader("Content-Disposition", "inline;");
HttpContext.Current.Response.AddHeader("content-length", bBlob.Length.ToString());
HttpContext.Current.Response.BinaryWrite(bBlob);
HttpContext.Current.Response.Flush();
HttpContext.Current.Response.SuppressContent = true;
HttpContext.Current.ApplicationInstance.CompleteRequest();
}
【问题讨论】: