发生背景 :公司需求让我们将存放在数据库中的二进制PDF文件数据导出,现在导出时会遇到有多个PDF的情况,之前做的是将数据拿出来转Byte[]数组以File方法导出PDF,但好像只能导出一个,请指教。
代码:
public ActionResult GetUploadFile(int id)
{
byte[] FileContent = null;
var report = service.GetReportPDFByID(id);
for (int i = 0; i < report.Count; i++)
{
if (i == 0)
{
FileContent = report[i].FileContent;
}
}
return File(FileContent, "application/pdf");
}
返回不了多个,可以用ICSharpCode.SharpZipLib.dll将2进制数据压缩到压缩包后下载压缩文件解压得到多个pdf,代码大概如下
var ms = new System.IO.MemoryStream();
ICSharpCode.SharpZipLib.Zip.ZipOutputStream s = new ICSharpCode.SharpZipLib.Zip.ZipOutputStream(ms);
/*
//遍历数据库记录得到2进制数据存入pdfdata数组中,然后压入压缩包,下面为压缩包
ICSharpCode.SharpZipLib.Zip.ZipEntry entry = new ICSharpCode.SharpZipLib.Zip.ZipEntry( "pdf文件名,注意不要重复.pdf");
s.PutNextEntry(entry);
s.Write(pdfdata, 0, pdfdata.Length);
*/
s.Finish();
s.Close();
var data = ms.ToArray();//压缩包2进制数据
ms.Close();
return File(data, "application/zip", "pdfs.zip");
文件小的话可以采用base64方式 数组返回前端解析, 还有就是打包多文件压缩包 再返回由调用端进行解压转成你要的形式
建议压缩之后传给前端解压
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!