현재 Amazon S3 계정에서 파일을 다운로드하는 데 다음 코드를 사용하고 있습니다.readfile()의 대안
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";
}
}
당신이 파일 확장자는 다음 날 S3를 사용하는 요점 내 EC2 서버 부하를 밝게하는 것입니다 read file()
에의 관련 URL을 전달 무엇 확인 볼 수 있듯이. 그러나이 방법을 사용하면 S3에서 EC2 서버를 통해 파일을 가져 오는 파일을 다운로드하는 것처럼 보입니다 (iStat을 통해 서버로드를 모니터링하면 파일을 다운로드 할 때 작업량이 늘어남을 알 수 있음).
파일을 EC2 서버가 아닌 S3에서 직접 다운로드 할 수있는 다른 방법이 있습니까 ??
업데이트 : 그냥 빠른 업데이트 - 나는 아파치보다는 Nginx를 사용하고 있으므로 .htaccess는 아무도 제안 할 생각이 없다면.
덕분에,하지만 내 문제입니다. 그 파일을 강제로 다운로드하려고합니다. 나는'Content-Disposition : attachment;가 파일을 재생하는 대신 브라우저에 다운로드하도록 지시했다고 생각했지만'readfile()'을'header ('위치)로 변경하면 아무 것도하지 않는 것처럼 보입니다. ..)' –
s3의 파일로 헤더를 설정할 수 있어야합니다. 나는 이런 식으로 내용 처리 헤더를 설정하려고 시도한 적이 없지만 작동 할 수도 있습니다. – datasage
죄송합니다, 저를 잃어 버렸습니까? –