【发布时间】:2015-12-03 17:12:02
【问题描述】:
我正在尝试使用 getObject 方法从 AWS S3 下载大文件。但是对于大文件,页面会关闭。如何使用范围完全下载文件?
function DownloadContent($keyName) {
$store = array();
require(__DIR__ . '/../config/s3Config.php');
if (!$this->s3Client) {
$this->s3Client = S3Client::factory(array(
'key' => $store['s3']['key'],
'secret' => $store['s3']['secret']
));
}
foreach ($keyName as $key => $row) {
$varFileName = explode('/', $row);
$bucket = 'my-bucket-name';
$result = $this->s3Client->getObject(array(
'Bucket' => $bucket,
'Key' => $row
));
header("Content-Type: {$result['ContentType']}");
header("Content-Disposition: attachment; filename=\"{$varFileName[2]}\"");
header('Expires: 0');header("X-Sendfile: $varFileName[2]");
echo $result['Body'];
}
}
【问题讨论】:
-
您遇到了什么实际错误?您是否在 PHP 中耗尽了内存?这些文件必须加载到 PHP 中,占用内存,因此您需要足够的内存来处理它们。
-
页面出现错误 ERR_INVALID_RESPONSE,我认为大文件响应正在处理。我想使用 range 属性进行并发下载。
-
您的 PHP 错误日志中有任何内容吗?
-
当你谈到“大”时,你不能像这样完全模糊。上次我遇到“大文件问题”时,所有答案都引用了 10 到 100 MB 的大小,而我查看的是 300 到 600 GB。 “大”是非常相对的。
-
我的文件大小也以 GB 为单位,需要下载。
标签: php amazon-web-services amazon-s3