Я разрабатываю новое веб-приложение, которое использует серверы Amazon S3 в качестве системы хранения и Codeiginter как фреймворк PHP.
Мне нужно принудительно загрузить файл при нажатии ссылки. Исходный URL-адрес выглядит следующим образом:
http://www.our-web.com/download/do/1.jpg
который генерирует временный подписанный URL-адрес фактическому файлу на серверах Amazon S3 следующим образом:
http://main_bucket.s3.amazonaws.com/post/1/1.jpg?AWSAccessKeyId=AKIAJEOQKYPKC3CCU5RA&Expires=1305395426&Signature=iuzCdA22gImLK192%2BMAhk8OkAY8%3D
Мне нужно, чтобы файл начал загрузку с реального URL Amazon в ближайшее время, когда пользователь нажимает на ссылку.
У меня есть два способа сделать это сейчас:
- Используйте
redirect()
, который откроет файл, который не загрузит его; или -
Изменить заголовки как этот код:
header('Content-type: application/force-download'); header('Content-Disposition: attachment; filename=' . $file_name); header('Content-Transfer-Encoding: binary'); header('Expires: 4000'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header('Pragma: public'); header('Content-Length: ' . filesize($generated_file)); readfile($generated_file);
К сожалению, оба способа не помогают мне. Второй способ заставляет загрузку загружаться с моего сайта, а не напрямую с Amazon.
Как заставить файл загружаться напрямую с серверов Amazon S3, а не с моего сайта?