【问题标题】:Open pdf from server path in Symfony3在 Symfony3 中从服务器路径打开 pdf
【发布时间】:2018-01-30 08:46:52
【问题描述】:

我想在窗口浏览器中打开 pdf 文件,但出现“文件“\\servername\20\2016080.pdf”不存在” 如果我在浏览器中复制此路径,就可以了。

编辑:我在日志中找到了

CRITICAL - 未捕获的 PHP 异常 Symfony\Component\HttpFoundation\File\Exception\FileNotFoundException: "文件 "\\servername\20\2016080.pdf" 不存在" 在 C:\wamp64\www\his\vendor\ symfony\symfony\src\Symfony\Component\HttpFoundation\File\File.php 第 37 行

谢谢。

$response = new BinaryFileResponse($result = $ServerModel->getDocument($request-> get('id'));
$response->headers->set('Content-Type', 'application/pdf');
return $response; 

【问题讨论】:

  • 你试过这个stackoverflow.com/a/28920003/2270041 吗?
  • 您确定不需要RedirectResponse 吗?
  • 我已经试过了,我有同样的错误。不,我不需要它。谢谢。
  • 这是拼写错误还是复制粘贴错误? $request-> get('id')
  • 复制过去的路径也不起作用,我不明白错字。

标签: symfony


【解决方案1】:

如果您使用的是 symfony 3.2 或更高版本(您应该是),您可以使用新的 file 助手来提供二进制文件。

from the symfony docs

$pdfPath = $this->getParameter('dir.downloads').'/sample.pdf';

return $this->file($pdfPath);

您获取文件路径的方式可能因您的实现而异。但如果它是一个直接的SplFileInfo:: 对象php docs 那么你可以使用:

$file->getPathname();

文件助手会自动为您完成许多繁重的工作。

确保文件可通过路由或非防火墙路径访问。

【讨论】:

  • 您的路径看起来无法访问。文件的实际路径是什么?
  • 我没有访问权限。
  • 如果您没有访问权限,您认为如何下载?
  • 我无权访问服务器,但我可以访问网络共享。
【解决方案2】:
/**
* @Route("/show-pdf", name="show-pdf")
*/
public function showPdf(Request $request) {

    ini_set('display_errors', 'On');

    $pdf = file_get_contents('path/to/file.pdf');

    return new Response($pdf, 200, [
                'Content-Type' => 'application/pdf',
                'Content-Disposition' => 'inline; filename="file.pdf"'
    ]);

}

【讨论】:

    猜你喜欢
    • 2012-01-24
    • 2013-06-17
    • 1970-01-01
    • 2021-06-13
    • 2015-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-13
    相关资源
    最近更新 更多