libro gran from php

gran - php get meta tags from url



Archivo de salida de PHP en el disco al navegador (5)

Quiero servir un archivo existente al navegador en PHP. He visto ejemplos sobre imagen / jpeg, pero esa función parece guardar un archivo en el disco y primero debes crear un objeto de tamaño adecuado (o simplemente no lo entiendo :))

En asp.net lo hago leyendo el archivo en una matriz de bytes y luego llamo a context.Response.BinaryWrite (bytearray), así que estoy buscando algo similar en PHP.

Michel


Esto debería comenzar: http://de.php.net/manual/en/function.readfile.php

Editar: Si su servidor web lo admite, usando

header(''X-Sendfile: '' . $filename);

donde el nombre del archivo contiene una ruta local como

/var/www/www.example.org/downloads/example.zip

es más rápido que readfile ().

(Se aplican las consideraciones de seguridad habituales para el uso del encabezado ())


Hay fpassthru() que debe hacer exactamente lo que necesita. Consulte la entrada del manual para leer sobre el siguiente ejemplo:

<?php // open the file in a binary mode $name = ''./img/ok.png''; $fp = fopen($name, ''rb''); // send the right headers header("Content-Type: image/png"); header("Content-Length: " . filesize($name)); // dump the picture and stop the script fpassthru($fp); exit; ?>

Vea here para todas las funciones del sistema de archivos de PHP.

Si es un archivo binario que desea ofrecer para descargar, probablemente también desee enviar los encabezados correctos para que aparezca el cuadro de diálogo "Guardar como ...". Consulte la primera respuesta a esta pregunta para ver un buen ejemplo de qué encabezados enviar.


Tanto para mi sitio web como para los sitios web que creo para clientes, uso un script PHP que encontré hace mucho tiempo.

Se puede encontrar aquí: http://www.zubrag.com/scripts/download.php

Utilizo una versión ligeramente modificada de la misma para poder ofuscar la estructura del sistema de archivos (lo que hace por defecto) además de no permitir el enlace activo (predeterminado) y agregué algunas funciones de seguimiento adicionales, como la referencia, IP (predeterminado) y otros datos similares que pueda necesitar si surge algo.

Espero que esto ayude.


Yo uso readfile () ( http://www.php.net/readfile ) ...

Pero debe asegurarse de configurar el "Tipo de contenido" correcto con el encabezado () para que el navegador sepa qué hacer con el archivo.

También puede forzar que el navegador descargue el archivo en lugar de intentar usar un complemento para mostrarlo (como en los archivos PDF), siempre me pareció un poco "hacky", pero se explica en el enlace anterior.


yo uso esto

if (file_exists($file)) { header(''Content-Description: File Transfer''); header(''Content-Type: application/octet-stream''); header(''Content-Disposition: attachment; filename=''.basename($file)); header(''Content-Transfer-Encoding: binary''); header(''Expires: 0''); header(''Cache-Control: must-revalidate, post-check=0, pre-check=0''); header(''Pragma: public''); header(''Content-Length: '' . filesize($file)); ob_clean(); flush(); readfile($file); exit; }