+-

我需要动态显示pdf.但我收到错误消息:无法加载PDF文档.(我使用Chrome)
Index.cshtml:
<div >
<h3> AJAX: (data='@@Url.Action("GetPDF")')</h3>
<object data='@Url.Action("GetPDF")' type="application/pdf" width="300" height="200"></object>
</div>
<div>
<h3> PATH: (data="/Pdf/32_1.pdf")</h3>
<object data="/Pdf/32_1.pdf" type="application/pdf" width="300" height="200"></object>
</div>
HomeController.cs:
public FileStreamResult GetPDF()
{
string fileName = "32_1.pdf";
FileStream fs = new FileStream(@"C:\Documents\MUH0000020\" + fileName, FileMode.Open, FileAccess.Read);
return File(fs, "application/pdf", fileName);
}
结果:

请帮忙.
最佳答案
当您使用FileStreamResult()或File()返回文件并指定文件名时,MVC呈现如下所示的Content-Disposition标头:
附件;文件名= someFile.pdf
“附件”部分专门告诉浏览器不要在浏览器中显示此文档,而是将其作为文件发送.在这种情况下,Chrome的PDF查看器似乎很烦人,这可能是设计使然!
在尝试让Chrome在浏览器中显示PDF时,这似乎是指定文件名的更好方法:
Response.AddHeader("Content-Disposition", "inline; filename=someFile.pdf");
return new FileStreamResult(stream, "application/pdf");
附带说明一下,您上面的解决方案实际上是有效的,因为您根本没有指定文件名,这可以解决标题问题!它可以工作,但不是因为StreamReader实际上用于文本文件.您可能直接传递了MemoryStream或FileStream并很好.
更多:Content-Disposition:What are the differences between “inline” and “attachment”?
点击查看更多相关文章
转载注明原文:c#-无法加载PDF文档(ASP.NET MVC ajax) - 乐贴网