在浏览器上显示保存在 gridfs 中的 pdf 文件的预览

Posted

技术标签:

【中文标题】在浏览器上显示保存在 gridfs 中的 pdf 文件的预览【英文标题】:show preview of pdf file saved in gridfs on browser 【发布时间】:2019-02-21 10:41:31 【问题描述】:

我正在使用gridfs 在 MongoDB 中存储文件。当我尝试在浏览器中显示保存在gridfs 中的大pdf 文件时遇到问题。大文件不会显示在浏览器中,但小文件会。

这是服务代码

public function getIpFileByFileId() 
    $request = $this->request;
    $dm = $this->container->get('doctrine_mongodb')->getManager('patient');
    $id = $request->get('fileId');
    //get doc
    $docIpMapping = $dm->getRepository('PatientDocumentsBundle:IPDocuments')->findOneBy([
        'id' => $id
    ]);
    $base64 = (base64_encode($docIpMapping->getFile()->getBytes()));
    $response['data'] = $base64;
    $response['msg'] = 'success';
    return $response;

这是前端代码

Ajax(path, data).success(function (result) 
                        $("#pdfDiv").html('<iframe style="width:100%;height:500px;" src="data:application/pdf;base64,' + result.data + '"></iframe>');
                );

代码有问题吗?如何在前端显示大文件?

【问题讨论】:

为什么不通过您的操作直接在您的网址中创建一个网址,这可能更简单:myurl.com/pdf/my-super-pdf.pdf ? @Flug 如果我将文件显示为 .pdf url,那么我需要将服务器中的文件另存为 pdf,是否有任何选项可以显示为 .pdf url 而无需在服务器中保存文件? 你可以用你的答案和 pdf 内容类型制作一个 pdf 视图。您可以动态执行此操作,而无需将其存储在您的服务器上 【参考方案1】:

这是我的建议,无需在新标签中打开, http://answerexpress.blogspot.com/2018/09/show-preview-of-pdf-file-saved-in.html

【讨论】:

不鼓励仅链接答案(它们可能会随着时间的推移而改变或消失),因此请在您的答案中报告(简单快捷)。

以上是关于在浏览器上显示保存在 gridfs 中的 pdf 文件的预览的主要内容,如果未能解决你的问题,请参考以下文章

在 MongoDB 上分片 GridFS

禁用 pdf 下载和保存选项

绘制条形码在绘图窗口中的显示方式与在保存的 .pdf 中不同

如何在使用 gridfs 保存之前调整大小和图像?

生成pdf而不将其保存到磁盘然后将其显示给浏览器

nginx+gridfs+mongodb 配置访问png图片显示无法加载问题