【问题标题】:Symfony2 PDF is of invalid format when downloading it on AndroidSymfony2 PDF 在 Android 上下载时格式无效
【发布时间】:2016-07-12 21:07:27
【问题描述】:

我正在使用此代码提示在 Symfony 2.7 上下载文件。它适用于 Windows/Mac/iPhone,但不适用于 Android:

        if (!file_exists($path)) {
            throw $this->createNotFoundException('File not found.');
        }

        $response = new BinaryFileResponse($path);
        $response->trustXSendfileTypeHeader();
        $response->setContentDisposition(
            ResponseHeaderBag::DISPOSITION_ATTACHMENT,
            $name,
            iconv('UTF-8', 'ASCII//TRANSLIT', $name)
        );

点击链接时,下载开始,但随后出现错误:Filename.pdf 格式无效。如果我按链接并选择“保存链接”,则 PDF si 下载正确,我可以打开它。

有谁知道如何修复 Android 上的下载问题? (使用第 5 版测试)。

谢谢

【问题讨论】:

  • 你在 Symfony 中使用什么 Bundle 来处理文件?另外,你提到第5版,那是Android版本吗?您的控制器代码的其余部分在哪里,或者您绝对确定问题出在您发布的代码中?
  • 无捆绑。 BinaryFileResponse 是 Symfony 核心的一部分。是的,Android 版本 5。我绝对确定问题出在我发布的代码中。我可以发布控制器的其余部分,但它不相关。

标签: php android pdf symfony


【解决方案1】:

你有没有尝试过这样的事情:

$response->headers->set('Content-Type', 'application/pdf');
$response->setContentDisposition(
    ResponseHeaderBag::DISPOSITION_ATTACHMENT,
    'filename.pdf'
);

不知道您的 PDF 将被引用。本质上是添加 PDF 的“Content-Type”标题,看看是否有区别。我不确定这是否可行。

编辑 #2 我看到了这个链接: http://www.digiblog.de/2011/04/android-and-the-download-file-headers/

所以试试这个标题更改:

$response->headers->set('Content-Type', 'octet-stream');
$response->setContentDisposition(
  ResponseHeaderBag::DISPOSITION_ATTACHMENT,
  'filename.pdf'
);

试一试,看看是否会改变结果。

【讨论】:

  • 我试过了,还是不行:同样的格式无效消息。
  • 对我的帖子进行了第二次编辑 - 你可以试试吗?
  • 还是不行。但是阅读那篇文章我解决了它。似乎链接代码不是问题。
  • 感谢您的链接。它帮助我找到了答案。
【解决方案2】:

代码不是问题。我将文件扩展名更改为 大写,现在它可以在 Android 上运行:filename.pdf -> 文件名。PDF 愚蠢,我知道。

【讨论】:

    【解决方案3】:

    其实,谢谢你的回答。我搜索并找到了这个:

    http://www.digiblog.de/2011/04/android-and-the-download-file-headers/

    旧版本的 Android 似乎存在问题。也许在您的代码中您可以检查这一点,并根据浏览器为文件创建正确的 CASE。

    【讨论】:

      猜你喜欢
      • 2022-12-30
      • 1970-01-01
      • 1970-01-01
      • 2023-03-16
      • 2017-04-21
      • 1970-01-01
      • 1970-01-01
      • 2021-11-04
      • 1970-01-01
      相关资源
      最近更新 更多