Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Descarga de archivo

Estas en el tema de Descarga de archivo en el foro de PHP en Foros del Web. Buenos días: El objetivo es descargar dos ficheros generados en el momento. Hago desde un script la siguientes llamadas: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código PHP: Ver original ...
  #1 (permalink)  
Antiguo 24/05/2015, 03:38
 
Fecha de Ingreso: noviembre-2005
Mensajes: 146
Antigüedad: 18 años, 5 meses
Puntos: 1
Descarga de archivo

Buenos días:
El objetivo es descargar dos ficheros generados en el momento.
Hago desde un script la siguientes llamadas:

Código PHP:
Ver original
  1. require('generar_facturas_simplificadas.php');
  2. require('generar_facturas_ordinarias.php');
El nombre de los ficheros varía en el código, los denomino:
Código PHP:
Ver original
  1. $fn = "Ficherostxt/S".$var3.".txt"; //Para el primer script.
  2. $fn = "Ficherostxt/O".$var3.".txt";// Para el segundo script.

En cada uno de esos script se desarrolla el código y terminan respectivamente con el siguiente código, variando sólo el nombre del fichero:

Código PHP:
Ver original
  1. $fn = "Ficherostxt/S".$var3.".txt";
  2.  
  3.                             // hay una larga lista de content-type, por ejemplo:
  4.                             header('Content-Type:application/octet-stream'); // rar
  5.                             header('Content-Type:text/plain'); // txt, html, etc
  6.  
  7.                             // más esto:
  8.                             header('Content-Type:application/force-download');
  9.                             header('Content-Description:File Transfer');
  10.                             header('Pragma:public');
  11.                             header('Expires:0');
  12.                             header('Cache-Control:no-cache,must-revalidate,post-check=0,pre-check=0');
  13.                             header('Cache-Control:private,false');
  14.                             header("Content-Disposition:attachment;filename={$fn}");
  15.                             header('Content-Length:'.filesize( $fn ));
  16.                             @readfile( $fn );
  17.                             die();

Problema:
Estoy trabajando en local.
La ejecución se desarrolla y los dos ficheros son generados y guardados en el fichero de local, que es parte de lo esperado por el código previo, pero la descarga sólo se produce para el primero que abre ventana para decir donce quiero guardarlo. Y se acabó. No descarga el segundo fichero.

Alguna idea de por qué?
  #2 (permalink)  
Antiguo 24/05/2015, 03:46
 
Fecha de Ingreso: noviembre-2005
Mensajes: 146
Antigüedad: 18 años, 5 meses
Puntos: 1
Respuesta: Descarga de archivo

Cita:
La ejecución se desarrolla y los dos ficheros son generados y guardados en el fichero de local, que es parte de lo esperado por el código previo, pero la descarga sólo se produce para el primero que abre ventana para decir donce quiero guardarlo. Y se acabó. No descarga el segundo fichero.
RECTIFICACIÓN:
Solo se guarda en local el primero, y solo se descarga el primero.
  #3 (permalink)  
Antiguo 24/05/2015, 04:07
 
Fecha de Ingreso: noviembre-2005
Mensajes: 146
Antigüedad: 18 años, 5 meses
Puntos: 1
Respuesta: Descarga de archivo

Código PHP:
Ver original
  1. RECTIFICACIÓN:
  2. Solo se guarda en local el primero, y solo se descarga el pri
mero.

RECTIFICACIÓN OTRA VEZ.
Hace lo que le dá la gana.
Se generan las dos series de facturas y las guarda en local, pero sólo descarga la primera.
  #4 (permalink)  
Antiguo 24/05/2015, 08:24
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Descarga de archivo

Es imposible descargar dos archivos a la vez, además de que tienes die() en ambos archivos es obvio que el segundo jamás se ejecutará.

¿Si sabes lo que hace die() verdad?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 24/05/2015, 09:41
 
Fecha de Ingreso: noviembre-2005
Mensajes: 146
Antigüedad: 18 años, 5 meses
Puntos: 1
Respuesta: Descarga de archivo

Mi estimado pateketrueke:
Si. O quiero creer que lo sé. De hecho intenté hacerlo sin el die() en el primer archivo y sin die() en los dos.
No obstante no se trata de descargar dos archivos a la vez.
Entiendo que es secuencial primero ejecuta el primer script, baja el archivo, y ejecuta el segundo scrip que debería bajar el segundo.
  #6 (permalink)  
Antiguo 24/05/2015, 09:47
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Descarga de archivo

Cita:
Entiendo que es secuencial primero ejecuta el primer script, baja el archivo, y ejecuta el segundo scrip que debería bajar el segundo.
No, te equivocas.

No puedes descargar archivos "en secuencia".

Debes entender que HTTP no funciona de ese modo, es petición por petición, recurso por recurso.

No puedes obtener dos recursos consecutivos en la misma petición.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 24/05/2015, 10:16
 
Fecha de Ingreso: noviembre-2005
Mensajes: 146
Antigüedad: 18 años, 5 meses
Puntos: 1
Respuesta: Descarga de archivo

Uffff. Me queda mucho por entender.
Bien he trasteado un poco y ahora lo que baja es un archivo único, pero que lleva la información que tenía que bajarse en archivos independientes. Es decir no sé porque pero el archivo inicial o no se cierra y agrega la información del siguiente script o se vuelve a abrir y agrega la información.
¿Qué he cambiado del código? He eliminado en los dos scripts la función die().
Me resuelve el problema, pero me disgusta no profundizar para entender el asunto.
  #8 (permalink)  
Antiguo 24/05/2015, 10:20
 
Fecha de Ingreso: noviembre-2005
Mensajes: 146
Antigüedad: 18 años, 5 meses
Puntos: 1
Respuesta: Descarga de archivo

No obstante:
En Visual basic existe una función showme() que te abre una ventana que permite recorrer el directorio del disco duro y seleccionar los archivos que quieres descargarte.
En Java también existe.
Supongo que PHP debe existir también pero para localizar los archivos en el directorio del hosting. Puedes darme alguna referencia de este asunto.
Gracias.

Etiquetas: html
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 14:15.