www para oficial instalar descargar php download

para - php web oficial



Descarga de archivos de fuerza de PHP (4)

La respuesta de Kolink funcionó para mí (cambie la ubicación de la ventana al archivo php), pero como quiero enviar variables POST junto con la solicitud, terminé usando un formulario oculto. El código que estoy usando es el siguiente:

var url = ''php/utils/getXMLfile.php''; var form = $(''<form action="'' + url + ''" method="post" style="display: none;">'' + ''<input type="text" name="fname" value="'' + text + ''" />'' + ''</form>''); $(''body'').append(form); $(form).submit();

¡Gracias por todas las respuestas!

Esta pregunta ya tiene una respuesta aquí:

Estoy tratando de usar PHP para forzar una descarga en una computadora cliente (con el diálogo de archivo, nada siniestro). He encontrado muchas páginas que recomiendan que use la función header () para controlar la respuesta de mi script PHP, pero no estoy teniendo suerte con esto. El código que tengo es el siguiente:

$file = $_POST[''fname'']; if(!($baseDir . ''//AgcommandPortal//agcommand//php//utils//ISOxml//' . $file)) { die(''File not found.''); } else { header(''Pragma: public''); header(''Content-disposition: attachment; filename="tasks.zip"''); header(''Content-type: application/force-download''); header(''Content-Length: '' . filesize($file)); header(''Content-Description: File Transfer''); header(''Content-Transfer-Encoding: binary''); header(''Connection: close''); ob_end_clean(); readfile($baseDir . ''//AgcommandPortal//agcommand//php//utils//ISOxml//' . $file); }

Lo llamo usando este JavaScript:

$.ajax({ url: url, success: function(text) { var req = new XMLHttpRequest(); req.open("POST", ''php/utils/getXMLfile.php'', true); req.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); req.send(''fname='' + encodeURIComponent(text)); } });

Esto devuelve el contenido del archivo como texto, pero no activa un diálogo de descarga. ¿Alguien tiene alguna sugerencia?


En lugar de usar AJAX, simplemente redirija el navegador a la URL relevante. Cuando recibe el encabezado content-disposition:attachment , descarga el archivo.


Intentaría enviar un encabezado de PHP como este, para reemplazar el encabezado de application/force-download :

header("Content-type: application/octet-stream");


Pocas sugerencias

1.

if(!($baseDir . ''//AgcommandPortal//agcommand//php//utils//ISOxml//' . $file)) {

En lugar:

if(!file_exists($baseDir ....)){

2.No necesita el tamaño.

3. Prueba este:

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