我目前正在使用以下代码从我的 Amazon S3 帐户下载文件。
if(isset($_POST['file_name'])) {
$bucket = $_POST['bucket'];
$fname = $_POST['file_name'];
$accessKey = 'AKIAIEHFBME6F5Q62FTQ';
$secretKey = '<REMOVED>';
$file_type = pathinfo($fname, PATHINFO_EXTENSION);
$mp3_url = el_s3_getTemporaryMP3Link($accessKey, $secretKey, $bucket, $fname);
$zip_url = el_s3_getTemporaryZipLink($accessKey, $secretKey, $bucket, $fname);
if ($file_type === "mp3") {
header('Content-type: audio/mpeg3');
header('Content-Disposition: attachment; filename="themixtapesite_'.$fname.'"');
readfile($mp3_url);
exit();
} else if ($file_type === "zip") {
header('Content-type: application/zip');
header('Content-Disposition: attachment; filename="themixtapesite_'.$fname.'"');
readfile($zip_url);
exit();
} else {
echo "Sorry, File does not exist";
}
}
如您所见,它检查文件扩展名是什么,然后将相关的 url 传递给read file()
我使用 S3 的全部目的是减轻我的 EC2 服务器负载。但是,似乎使用这种方法来下载文件,它通过 EC2 服务器从 S3 中提取文件(通过 iStat 监控服务器负载显示下载文件时活动增加)。
有没有另一种方法可以直接从 S3 下载文件,而不是通过 EC2 服务器?
更新:只是一个快速更新——我使用的是 Nginx 而不是 apache,所以如果有人想建议的话,没有 .htaccess。