2011-01-20 27 views
6

¿Puedo usar URL externas en readfile()?PHP readfile() de URL externa

header('Content-type: application/pdf'); 
    header('Content-Transfer-Encoding: binary'); 
    header('Content-Disposition: inline; filename="'.$file.'" '); 
    //header('Content-Length: ' . filesize("http:...z/pub/".$file.'.pdf')); 
    @readfile("http://...z/pub/".$file.'.pdf'); 
+2

Pruébelo y/o [RTM] (http://php.net/readfile): "Se puede utilizar una URL como nombre de archivo con esta función si se han habilitado los contenedores fopen". ;-) – netcoder

+0

¿Debo hacer 'exec ("wget ​​$ url -O $ nombre de archivo")'? – user583311

Respuesta

17

El manual de PHP en readfile estados:

Una URL se puede utilizar como un nombre de archivo con esta función si el fopen wrappers se han habilitado. Consulte fopen() para obtener más información sobre cómo especificar el nombre de archivo. Consulte el Supported Protocols and Wrappers para obtener enlaces a información sobre las capacidades que tienen los diversos contenedores, las notas sobre su uso y la información sobre las variables predefinidas que pueden proporcionar.

Como alternativa también se puede utilizar file_get_contents:

echo file_get_contents("http://...z/pub/".$file.'.pdf'); 
+0

En ambas soluciones, hay algún problema con el tamaño del archivo u otra cosa, porque no funciona. – user583311

+0

Eliminado -1 después de la edición;) – Mchl

+0

@ user583311 ¿Cuál parece ser el problema? –

2

Sí, de acuerdo con la página readfile:

Un URL puede ser utilizado como un nombre de archivo con esta función si el fopen_wrappers han sido habilitados. Consulte fopen() para obtener más información sobre cómo especifique el nombre de archivo. Ver el Supported Protocols and Wrappers de enlaces a información acerca de lo que las habilidades de los diversos envoltorios tienen, notas sobre su uso e información en ninguna de las variables predefinidas que pueden proporcionar .