У меня есть веб-страница asp.net, где пользователи могут выбирать несколько элементов в сетке. Когда они нажимают кнопку загрузки, они должны иметь возможность загружать несколько PDF-файлов в виде zip-файла на основе идентификаторов выбранных элементов сетки. PDF-файлы хранятся в базе данных Oracle в виде больших двоичных объектов.
Я могу получить один большой двоичный объект и отобразить его в формате PDF в браузере. Но мне трудно понять, как поместить несколько больших двоичных объектов в виде pdf в zip-файл, а затем загрузить указанный zip-файл. Я хотел бы использовать библиотеку 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();
}