現在、AmazonS3アカウントからファイルをダウンロードするために次のコードを使用しています。
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を介してサーバーの負荷を監視すると、ファイルをダウンロードするときのアクティビティが増加します)。
これを行う別の方法はありますか?ファイルがEC2サーバー経由ではなくS3から直接ダウンロードされるようにしますか?
更新:簡単な更新-私はApacheではなくNginxを使用しているので、誰かがそれを提案しようと考えている場合は.htaccessはありません。