He estado desarrollando una nueva aplicación web que se basa en Amazon S3 servidores como sistema de almacenamiento, y Codeiginter como el marco PHP.Forzar la descarga de servidores s3 amazon
Necesito forzar el archivo para descargar cuando se hace clic en el enlace. La dirección URL original es el siguiente:
http://www.our-web.com/download/do/1.jpg
que genera una URL temporal firmado con el archivo existente en los servidores de Amazon S3 como esto:
http://main_bucket.s3.amazonaws.com/post/1/1.jpg?AWSAccessKeyId=AKIAJEOQKYPKC3CCU5RA&Expires=1305395426&Signature=iuzCdA22gImLK192%2BMAhk8OkAY8%3D
Necesito hacer el inicio del archivo descargando de la URL real de Amazon tan pronto como el usuario haga clic en el enlace.
tengo ahora dos maneras de hacerlo:
- Use
redirect()
que se abrirá el archivo no se descarga; o cabeceras como Alter este código:
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);
Por desgracia, las dos cosas no me ayudan. El segundo método hace que la descarga provenga de mi sitio web y no directamente de Amazon.
¿Cómo puedo forzar la descarga del archivo directamente desde los servidores de Amazon S3, y no desde mi sitio web?
file_get_contents uso o un rizo retrive el archivo S3 luego hacer una pasarela con las cabeceras –
Eso es lo que había de hacer con ' readfile'. – Lasar
correcto, pero a pesar de que no quiero que el cliente descargue el archivo a través de mi sitio web. debe haber una mejor solución para descargar desde otro dominio. – Khaled