对象或嵌入在 MVC 中不起作用

Object or embed is not working in MVC

我正在尝试在 MVC 视图页面中使用 <embed><object> 将 PDF 显示到视图中。

View.cshtml

<object data="@Server.MapPath(ViewBag.FileName)"  type="application/pdf" >
If you are unable to view file, you can download from
</object>

当我查看页面时,我得到了正确的 PDF 路径,但 PDF 在页面中不可见。

我的相同代码正在处理简单的 HTML 文件。

路径:

你能不能做一个 returns FileContentResult 读取文件并只在前端显示内容的方法?

并添加点击此处下载,以便在需要时下载。

干杯!

根据 https://developer.mozilla.org/en-US/docs/Web/HTML/Element/object 上的文档,<object> 标签的 data 属性必须是:

The address of the resource as a valid URL.

(粗体是我的,在这里说明一下)。

换句话说,您需要指定指向PDF的URL,而不是文件路径。浏览器无法访问服务器的磁盘,因此无法直接从中读取。它所能做的就是向 URL 发出 HTTP 请求以获取文档。

所以它可能是这样的:

<object data="documents/@ViewBag.FileName"  type="application/pdf" >

但是当然,您使用的具体内容取决于您放置文档的位置,以及您已经放入 ViewBag.Filename 中的具体内容。

请注意,无法从 Web 访问 MVC 应用程序中的 App_Data 文件夹(并且不希望使其可访问,因为它包含诸如数据库文件之类的内容),因此您必须将其他地方的 PDF 更合适。