Quiero solicitar que se descargue un archivo cuando el usuario visite una página web con PHP. Creo que tiene algo que ver file_get_contents
, pero no estoy seguro de cómo ejecutarlo.
$url = "http://example.com/go.exe";
Después de descargar un archivo con header(location)
él no se redirige a otra página. Simplemente se detiene.
Respuestas:
Lea los documentos sobre el archivo read de la función PHP incorporada
También asegúrese de agregar el tipo de contenido adecuado según su aplicación de archivo / zip, aplicación / pdf, etc., pero solo si no desea activar el cuadro de diálogo Guardar como.
fuente
O, cuando el archivo no se puede abrir con el navegador, puede usar el
Location
encabezado:fuente
$file
(que contiene la parte http) sino un nombre de archivo válido.es correcto
o mejor para el tipo de archivos exe
fuente
Primero muestre su archivo y establezca su valor en url.
index.php
download.php
fuente
En caso de que tenga que descargar un archivo con un tamaño mayor que el límite de memoria permitido (
memory_limit
configuración ini), lo que causaría elPHP Fatal error: Allowed memory size of 5242880 bytes exhausted
error, puede hacer esto:fuente
ob_flush()
, puede haber el error: ob_flush (): no se pudo vaciar el búfer. No hay tampón para lavar . envolverlo conif (ob_get_level() > 0) {ob_flush();}
(Referencia stackoverflow.com/a/9182133/128761 )Una modificación de la respuesta aceptada anteriormente, que también detecta el tipo MIME en tiempo de ejecución:
fuente
El siguiente código es una forma correcta de implementar un servicio de descarga en php como se explica en el siguiente tutorial
fuente
file_name
yfilePath
. No es muy buena práctica de codificación. Especialmente sin explicación. La vinculación a un tutorial externo no es útil.prueba esto:
fuente
http://php.net/manual/en/function.readfile.php
Eso es todo lo que necesitas. "Monkey.gif" cambia a su nombre de archivo. Si necesita descargar desde otro servidor, "monkey.gif" cambie a " http://www.exsample.com/go.exe "
fuente
También puede transmitir descargas que consumirán significativamente menos recursos. ejemplo:
En el ejemplo anterior, estoy descargando un test.zip (que en realidad era el zip del estudio de Android en mi máquina local). php: // output es una secuencia de solo escritura (generalmente utilizada por echo o print). después de eso, solo necesita configurar los encabezados necesarios y llamar a stream_copy_to_stream (fuente, destino). El método stream_copy_to_stream () actúa como una tubería que toma la entrada de la secuencia de origen (secuencia de lectura) y la canaliza a la secuencia de destino (secuencia de escritura) y también evita el problema de la memoria permitida agotada para que realmente pueda descargar archivos que son más grandes que tu PHP
memory_limit
.fuente
Las respuestas sobre mí funcionan. Pero, me gustaría contribuir con un método sobre cómo realizarlo usando GET
en su página html / php
y
download.php
contieneEsto debería funcionar en cualquier tipo de archivo. esto no se prueba con POST, pero podría funcionar.
fuente