【问题标题】:How to return two pdf files in one action result?如何在一个操作结果中返回两个 pdf 文件?
【发布时间】:2016-01-03 06:07:34
【问题描述】:

我需要在 MVC 中回发时返回两个 PDF 文件,但操作结果只返回一个文件。有没有其他方法可以在操作结果中返回多个文件?

return File(stream, "application/pdf", Summary.pdf);

这样我需要返回多个文件。

【问题讨论】:

  • 在view上提供两个href,用户可以点击下载
  • 将它们压缩成一个文件,合并 PDF 或提供两个链接。其他任何东西都只是奇怪的 UI。
  • 朋友,我需要提交我的表格,然后我才能进行一些计算以生成报告
  • 什么是 zip 我不知道那个朋友可以给我一些例子
  • zip、rar、tar、7z 现在你知道了吗?

标签: c# asp.net-mvc asp.net-mvc-4 model-view-controller


【解决方案1】:

如果您使用 ajax ,您可以创建文件链接并使用 json 发送回链接,然后在 javascripts 中打开链接。

服务器端:

 ...
    retrun Json(new {.link1 = "stackoverflow.com" , 
                     .link2 = "stackexchange.com"})

和客户端:

$.ajax({
        url: "@Url.Action("ActionName" , "ControllerName")",
        type: "post",
        datatype: "json",
        data: data,
        success: function(sucess) {
            if(success.link1 != undefined)
            {
                  var win = window.open(d.link1 , '_blank');
                  var win1 = window.open(d.link2 , '_blank');
                  if (win==undefined) {
                      //Broswer has blocked it
                      alert(' Activate your browser popup');
                  }
            }
       },
       error: function () { console.log("error"); }
  });

【讨论】:

    【解决方案2】:

    从控制器中的操作返回的ActionResult 始终代表一件事,并且由于 HTML 中没有多文件引用的概念,因此您必须进行两个单独的步骤,或者将现有操作合并到一个步骤中。

    所以你有三个选择:

    • 创建两个超链接,并调用两个单独的操作。在其中任何一个中生成报告。像现在一样返回FileResult

    • 将您的文件放在一个 zip 文件中,然后发送该文件。好处是你只需要一个动作。坏处是用户必须先解压缩文件才能查看报告。要完成这项工作,您首先必须生成两个文档,使用library 压缩文件,然后使用FileResult 或流返回。

    • 将两个报表合并为一个。这是否可行取决于文档是否相关,它们可以被视为一个。您可以使用library 将它们合并在一起并发回合并后的报告。

    除非您有充分的理由不这样做,否则我会选择选项 1。

    【讨论】:

    • 如何在 c# 中将我的文件放入 zip 文件中
    • 您也可以使用 iTextSharp 之类的库合并 PDF,但我认为这太过分了 - 只需使用选项 1。
    • 取决于您是否可以考虑它们。如果您有两个单独的文档,您可能希望保持这种方式。我认为这是一个很好的第三选择。 @大卫G
    猜你喜欢
    • 2015-07-19
    • 2020-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多