J'ai développé une nouvelle application web qui repose sur les serveurs Amazon S3 comme système de stockage, et Codeiginter comme framework PHP.Forçage Téléchargement à partir de serveurs s3 amazon
Je dois forcer le téléchargement du fichier lorsque l'utilisateur clique sur le lien. L'URL originale ressemble à ceci:
http://www.our-web.com/download/do/1.jpg
qui génère une URL temporaire signé au fichier réel sur les serveurs Amazon S3 comme ceci:
http://main_bucket.s3.amazonaws.com/post/1/1.jpg?AWSAccessKeyId=AKIAJEOQKYPKC3CCU5RA&Expires=1305395426&Signature=iuzCdA22gImLK192%2BMAhk8OkAY8%3D
que je dois faire le début de fichier le téléchargement de l'URL Amazon réel dès que l'utilisateur clique sur le lien.
J'ai deux façons de le faire maintenant:
- Utilisez
redirect()
qui ouvrira le fichier ne le télécharger; ou têtes Alter comme ce code:
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);
Malheureusement, les deux moyens ne me permettent pas. La deuxième méthode provoque le téléchargement à venir de mon site Web et non directement à partir d'Amazon.
Comment puis-je forcer le téléchargement direct du fichier à partir des serveurs Amazon S3, et non de mon site Web?
file_get_contents utilisation ou cURL retrive le fichier S3 puis faire un passthrough avec les en-têtes –
C'est ce qu'il avait fait avec ' readfile'. – Lasar
correct, mais même si je ne veux pas que le client télécharge le fichier via mon site Web. il doit y avoir une meilleure solution pour télécharger depuis un autre domaine. – Khaled