我需要在MVC中回发两个PDF文件,但操作结果只返回一个文件。还有其他方法可以在动作结果中返回多个文件吗?
return File(stream, "application/pdf", Summary.pdf);
像这样我需要返回多个文件。
答案 0 :(得分:4)
从控制器中的操作返回的ActionResult
始终代表一件事,并且由于HTML中没有多文件引用的概念,您必须执行两个单独的步骤,或将现有操作合并为一个步骤
所以你有三个选择:
创建两个超链接,并调用两个单独的操作。在其中任何一个中生成报告。像现在一样返回FileResult
。
将您的文件放入zip文件中,并将其发送出去。好消息是你只需要一个动作。不好的是,用户必须先解压缩文件才能查看报告。要使其工作,首先必须生成两个文档,使用library压缩文件,然后使用FileResult
或流返回文件。
将两份报告合并为一份。如果这是可行的,则取决于文件是否相关,它们可以被认为是一个。您可以使用library将它们合并在一起并发回合并的报告。
我的赌注是选项1,除非你有充分的理由不这样做。
答案 1 :(得分:0)
如果您使用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"); }
});