【发布时间】:2012-05-23 23:36:05
【问题描述】:
我有一个使用 Amazon S3 存储文件的应用程序。我遇到了一个问题,即没有使用 chrome 下载大型 PDF。较小的 PDF 效果很好,但较大的 PDF 将不起作用。我不认为这是 PDF 的问题,我怀疑它与文件的大小有关。
在浏览器中查看文件时,这是我正在使用的代码:
header("Content-type: $filetype");
header("Content-Disposition: filename=\"".$filename."\"");
$response = $s3->get_object(AMAZON_BUCKET, $filepath);
echo $response->body;
这对较小的文件非常有用,但今天我遇到了一个问题,即无法显示这个大 PDF。我认为文件太大而无法呈现。因此,如果文件太大,我决定尝试强制下载文件而不是在浏览器中查看。所以这是我试图开始工作的代码,但我一定做错了什么,因为它不起作用。
$response = $s3->get_object(AMAZON_BUCKET, $filepath, array(
'response' => array(
'content-type' => $filetype,
'content-disposition' => 'attachment'
)
));
如何使用 Amazon SDK for PHP 强制下载大文件?
【问题讨论】:
-
如果文件太大,可能是您的 PHP 脚本内存不足。您是否检查了错误日志(或启用了显示错误?您是否得到“响应”?更多关于它在哪里中断的线索可能会有所帮助。
-
我将内存增加到 82M。我遇到问题的文件是 43 mb。
-
问题的另一部分:你能描述更多它不起作用的症状吗?您是否从服务器得到任何响应 - 500 错误、“警告”或“通知”。日志中有任何内容吗?
-
挂了一会儿,然后给我一个找不到这个网页。但真的在那里....不知道为什么会发生这个错误。我尝试的另一件事是获取对象的 URL,然后直接转到它,但我得到的只是一个空白页面。有趣的是,如果我在 safari 中使用相同的 URL,它可以工作,只是不是 chrome。
-
如果我禁用 chrome 在浏览器“about:plugins”中查看 PDF,然后让它转到 Amazon 提供的 URL,那么它将在 chrome 中工作。 Chrome 默认会在浏览器中查看 PDF,因此我不能依赖禁用插件的人来下载文件。
标签: php google-chrome pdf amazon-s3 amazon-web-services