txt para link hacer descargar con como codigo boton automaticamente atributo archivo php mysql browser download prompt

php - link - usando el indicador del navegador para descargar un archivo



descargar un pdf con javascript (1)

Tengo un sitio php / mysql en el que intento descargar un archivo delimitado por comas (CSV). El archivo csv que creo contiene datos delimitados por comas (nombre, dirección, ciudad, estado). Creo bien el archivo csv y lo coloco en el directorio / descargas del sitio. Hasta aquí todo bien. He estado buscando en línea y el código para activar la solicitud de descarga del navegador que veo con más frecuencia es:

$path = $_SERVER[''DOCUMENT_ROOT'']; $exportfile = "emailclientaddresses.csv"; $fullpath = "downloads/" . $exportfile; header("Content-type: text/plain"); header("Content-Length: ".filesize($exportfile)); header("Content-Disposition: attachment; filename=" . $fullpath);

El $ exportfile es el archivo csv que creó mi código. Está bien. Lo que esto hace es:

  1. El $ fullpath se muestra en el indicador de descarga del navegador en un formato muy extraño: download_emailclientaddresses.csv
  2. Cuando se descarga, se descarga la página web actual o una combinación del archivo csv y la página web actual.

De acuerdo, he intentado muchas cosas y nada ha funcionado. Entonces, si alguien puede ayudarme, lo agradecería. Gracias.

Ed Cohen


La documentación de PHP proporciona un buen ejemplo:

<?php $file = ''monkey.gif''; 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''); header(''Pragma: public''); header(''Content-Length: '' . filesize($file)); ob_clean(); flush(); readfile($file); exit; } ?>

EDITAR (Respuesta al comentario, explicación)

header(''Content-Description: File Transfer'');

No mostrar en el navegador, pero transfiere el archivo.

header(''Content-Type: application/octet-stream''); header(''Content-Transfer-Encoding: binary'');

El archivo es un archivo binario.
Los navegadores generalmente descargan archivos binarios, a menos que puedan mostrarlos.

header(''Content-Disposition: attachment; filename=''.basename($file));

Haga que el cuadro de diálogo de descarga muestre el nombre de archivo correcto.
Nota: puede usar cualquier nombre de archivo.

header(''Expires: 0''); header(''Cache-Control: must-revalidate''); header(''Pragma: public'');

El navegador no debe almacenar en caché el archivo.
La caché puede causar problemas en caso de contenido dinámico.

header(''Content-Length: '' . filesize($file));

Envíe el tamaño de archivo correcto al navegador,
de lo contrario, el navegador no puede estimar el tiempo de transferencia.

ob_clean(); flush();

Asegúrese de que los encabezados se envíen al navegador antes de que comience la descarga.

readfile($file);

Envíe el archivo al navegador.

exit;

Hecho :)