.net MVC中的 Return File能否返回多个PDF文件?(语言-c#)

发生背景 :公司需求让我们将存放在数据库中的二进制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");

记得下载ICSharpCode.SharpZipLib.dll丢bin目录里面

img


有其他问题可以继续交流~

文件小的话可以采用base64方式 数组返回前端解析, 还有就是打包多文件压缩包 再返回由调用端进行解压转成你要的形式

建议压缩之后传给前端解压

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632