Foros del Web » Programando para Internet » PHP »

Script para forzar descargas que debería funcionar, pero no lo hace

Estas en el tema de Script para forzar descargas que debería funcionar, pero no lo hace en el foro de PHP en Foros del Web. Hola, le sigo dando vueltas pero no comprendo qué falla. Se descarga el archivo, pero además da mensaje de error. Abro el .zip que he ...
  #1 (permalink)  
Antiguo 26/10/2008, 10:18
Avatar de Batusai  
Fecha de Ingreso: enero-2005
Ubicación: Málaga -Andalucía- España
Mensajes: 130
Antigüedad: 19 años, 3 meses
Puntos: 1
Script para forzar descargas que debería funcionar, pero no lo hace

Hola,

le sigo dando vueltas pero no comprendo qué falla. Se descarga el archivo, pero además da mensaje de error. Abro el .zip que he descargado y está bien y extraigo el contenido completo, pero me salta mensaje de error. He mirado por si hubiera algún \n que se me hubiera pasado en algún header, pero no lo veo. ¿Qué puede ser? Os pego el código.
Código:
	
/* Set data type, size... */
header("Last-Modified: " . gmdate("D, d M Y H:i:s T", filemtime($file)));
header("Content-Length: " . filesize($file));
header("Content-Disposition: attachment; filename=" . basename($file));
header("Content-Type: application/octet-stream");
header("Content-Transfer-Encoding: binary");

if ($fp = fopen( $file,  "r")) { 
    fpassthru($fp);
    fclose($fp);
}
Hace lo que espero que haga, pero no debería salir el error. Si descargo el fichero "a mano" no me da error, solo si lo descargo con el script.

Agradecería cualquier ayuda. Saludos.
  #2 (permalink)  
Antiguo 26/10/2008, 16:24
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Script para forzar descargas que debería funcionar, pero no lo hace

Hola batusai,

Prueba abrir tu archivo como rb, para abrirlo como binario.

Saludos.
  #3 (permalink)  
Antiguo 26/10/2008, 16:37
Avatar de Batusai  
Fecha de Ingreso: enero-2005
Ubicación: Málaga -Andalucía- España
Mensajes: 130
Antigüedad: 19 años, 3 meses
Puntos: 1
Respuesta: Script para forzar descargas que debería funcionar, pero no lo hace

Me sigue dando el mensaje de error al bajar el .rar
Cita:
C:\Documents and Settings\admin\Configuración local\Temp\software-1.rar: Final inesperado del archivo
Pero gracias por la idea. Es posible que ese dato sea más correcto que como lo tenía puesto.
  #4 (permalink)  
Antiguo 26/10/2008, 16:53
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Script para forzar descargas que debería funcionar, pero no lo hace

Mmm verifica que no tengas saltos de linea al final de cerrar el ?>.

Saludos.
  #5 (permalink)  
Antiguo 26/10/2008, 17:15
Avatar de Batusai  
Fecha de Ingreso: enero-2005
Ubicación: Málaga -Andalucía- España
Mensajes: 130
Antigüedad: 19 años, 3 meses
Puntos: 1
Respuesta: Script para forzar descargas que debería funcionar, pero no lo hace

No hay echo's con saltos de linea a partir de ese punto. Los hay en otras cadenas de texto que no tienen nada que ver con la descarga, sino con la función mail para enviar un correo al usuario diciendo que la descarga está disponible en un cierto enlace. Pero eso no debería afectar a la descarga en si misma, pero lo voy a probar...

Nada. El mismo mensaje de error. Yo alucino
  #6 (permalink)  
Antiguo 27/10/2008, 17:12
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Script para forzar descargas que debería funcionar, pero no lo hace

Mmm muy raro te recomendaria quitar las cabeceras para forzar la descarga y veas en el explorador que cosas se ponen al final, usa la cabecera header("Content-type: text/plain");

Saludos.
  #7 (permalink)  
Antiguo 28/10/2008, 11:24
Avatar de Batusai  
Fecha de Ingreso: enero-2005
Ubicación: Málaga -Andalucía- España
Mensajes: 130
Antigüedad: 19 años, 3 meses
Puntos: 1
Respuesta: Script para forzar descargas que debería funcionar, pero no lo hace

Pero no es un txt, es un archivo comprimido, normalmente en rar, y a veces en zip, pero comprimido.
  #8 (permalink)  
Antiguo 28/10/2008, 13:39
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Script para forzar descargas que debería funcionar, pero no lo hace

Si pero eso forzara que lo veas en pantalla y asi ver que es lo que te esta imprimiendo al final del script, es a modo debug.

Saludos.
  #9 (permalink)  
Antiguo 28/10/2008, 14:19
Avatar de Batusai  
Fecha de Ingreso: enero-2005
Ubicación: Málaga -Andalucía- España
Mensajes: 130
Antigüedad: 19 años, 3 meses
Puntos: 1
Respuesta: Script para forzar descargas que debería funcionar, pero no lo hace

Muy bien pensado.

Lo he hecho, con un archivo de texto normal y lo que descarga es un archivo con este contenido:
Código:
<!DOCTYPE html PUBLIC "-
Nada más. Hay que tener en cuenta que lo bajo como archivo binario:
Código:
		header("Content-Type: text/plain");
		header("Content-Transfer-Encoding: binary");

    //header("Content-Length: " . strlen($buffer));
    //header("Content-Disposition: attachment; filename=$filename");

if ($fp = fopen( $file,  "rb")) { 

	fpassthru($fp);
    fclose($fp); 
//y sigue el programa
¿Porqué intenta bajar el propio archivo .php? No lo comprendo. Debería intentar bajar simplemente el archivo.txt Lo digo porque así es como empieza el archivo .php:
Código:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
//y sigue...
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:12.