如何在MVC中的动作结果中返回PDF
我有点问题让我解决这个问题。 我有一个ajax调用,应该呈现一个加载PDF的iframe。 PDF是使用托管在其他环境中的Apache FOP生成的。 到目前为止我所拥有的是:
在控制器动作中(iFrame指向的src元素),代码片段为:
var targetStream = new MemoryStream(); using (var response = FOPrequest.GetResponse()) // response from FOP { using (var stream = response.GetResponseStream()) { stream.CopyTo(targetStream); } } return new FileStreamResult(targetStream, "application/pdf");
但是,这不能按预期工作。 将按预期填充流,但PDF不会在iFrame中呈现。 我得到一个Http响应代码200(OK)。
我会感激任何帮助。
您使用MVC FileContentResult返回ActionResult例如:
return File(fileArray, contentType, fileName)
另一个堆栈答案
你可以在这里使用返回类型作为FileResult
,如下所示:
public FileResult getFile(string CsvName) { //Add businees logic here byte[] fileBytes = System.IO.File.ReadAllBytes(System.Web.Hosting.HostingEnvironment.MapPath("~/Content/Uploads/records.csv")); string fileName = CsvName; return File(fileBytes, System.Net.Mime.MediaTypeNames.Application.Octet, fileName); }
可能不是确切的解决方案,你可以操纵和发展自己的。
希望这可以帮助。
通过nuget安装MvcPdfActionResult
PM> Install-Package MvcPdfActionResult
只需使用返回类型,因为控制器中的PdfActionResult将输出PDF文档而不是HTML。 这会使用iTextXmlWorker库将HTML转换为PDF。
... return PdfActionResult(model); }
在asp.net 5 MVC项目中从您的剃刀视图生成pdf文档。 https://www.nuget.org/packages/MvcPdfActionResult/
对于FileStreamResult,您的targetStream需要仍然是OPEN。 “使用”部分会关闭您的响应流,看起来您的targetStream也会关闭然后……
当我使用未关闭的MemoryStream时 – 您的代码有效! 我得到了感谢Natan Cooper的评论和链接。
上述就是C#学习教程:如何在MVC中的动作结果中返回PDF分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/954478.html