直接从sql数据库在网页中显示pdf文件,无需将它们保存到服务器文件系统

Aar*_*ten 5 c# sql embed pdf asp.net-mvc-3

我目前正在使用 html 嵌入标签来显示保存在本地服务器上的 pdf 文件。有没有办法在我的页面上显示 pdf 文件,而不必将其保存到服务器的本地文件系统?我只是想将它从控制器传递到视图,以便它可以在页面中显示为 pdf,而无需将其直接存储在文件系统上。

或者,有没有办法在用户离开他们正在查看的页面后调用从服务器删除 pdf 文件的方法?如何判断用户是否已离开该页面以及如何触发删除文件的方法?

Sco*_*pey 4

我创建了一个名为的 MVC 类PdfResult,它返回一个字节数组作为 PDF 文件。

目的如下(无法上传源码,抱歉):

  1. PdfResult继承自FileStreamResult
  2. Content-Type标题设置为application/pdf
  3. 将 设为Content-Dispositionattachmentinline并设置适当的文件名
  4. 将您的数据转换为Stream- 如果您的数据是字节数组,则将其写入到 a MemoryStream

有关如何执行此操作的一个很好的示例,请参阅/sf/answers/1167118431/ 。

然后,您的嵌入代码只需指向操作方法,就像它是 PDF 文件一样。
这是一个例子:

public ActionResult ShowPdf() {
    // Note: the view should contain a tag like <embed src='MyController/GetPdf'>
    return View(); 
}

public ActionResult GetPdf() {
    byte[] pdfBytes = dataRepo.GetPdf(...);
    return new PdfResult(pdfBytes, "Filename.pdf", false) ;
} 
Run Code Online (Sandbox Code Playgroud)