PHP y forzado de descarga

Y perdona la insistencia.
Durante el tiempo desde que te pregunté a ahora, he conseguido una forma de acceder a los ficheros del servidor. Como te indiqué antes, a través de "echo" mando la ruta completa y con un File file = new File (path) accedo al fichero. En realidad este acceso al fichero es para después poder obtener una imagen (thumbs) en reducido y mostrarlo en el applet, en caso de un archivo imagen.
De todas formas no se si esto está bien hecho, ya que en el servidor local de mi pc funciona, aunque cuando lo lleve a servidores externos, no se si estaría bien. ¿Qué opina?
Siento ser pesada, pero tengo otro problema. Una vez mostrado en el applet los ficheros de los que dispongo en el servidor, estoy intentando posibilitar la descarga de éstos. Es decir, al hacer doble click sobre uno, mando de nuevo una petición (esta vez GET) a un php que me descargue el fichero. La descarga la he probado mediante XUL, javascript y php, y funciona, pero en el caso del applet y php, tengo problemas. El contenido del php, es:
$ruta_fichero = str_replace("\\", "/",$_GET['filename']);
//echo $ruta_fichero;
if(file_exists($ruta_fichero)){
header("Content-type: application/force-download");
$file=$ruta_fichero;
$archivo = file_get_contents($file);
$tamanio = strlen($archivo);
header("Content-Length: ".$tamanio);
//Envio cabecera con el nombre del archivo
header('Content-disposition: attachment; filename=' . Basename($file));
header('Pragma: cache'); //Cabecera anti-cache
header('Expires: 0'); //Cabecera que define la duracion
echo $archivo;
Pero simplemente me manda el contenido al applet, no la "ventanita" de descarga( en la que salen los botones de abrir o guardar el fichero)
¿Sabría decirme por que sucede esto? ¿Estoy pidiendo algo imposible?

1 respuesta

Respuesta
1
Pues no sé si tendrá alguna influencia el hecho de llamarlo desde el applet.
Prueba el siguiente código PHP, que tengo comprobado que funciona, llamado desde una página normal:
<?php
header("Content-type: application/force-download");
header("Content-Disposition: filename=fichero.jpg");
header("Content-Transfer-Encoding: binary");
if (!@readfile("camino/fichero.jpg")) { // Se lee y vuelca el fichero
header("Content-type: text/html", true);
echo "
<p>ERROR: No se ha podido descargar el fichero</p>
";
}
?>
Este código me fuerza la descarga y me sale la ventanita. A ver si a ti también.
Hola!
En primer lugar, muchísimas gracias por intentar ayudarme. Sigo igual, para mí que es cosa del applet, porque ya te digo que el código tanto el que yo tenía como el que tu me has proporcionado, funciona desde un navegador. Junto con el applet lo que hace es devolverme el contenido en el flujo de entrada de la petición GET del applet, con lo que creo que son incompatibles. Voy a intentar buscar algo por internet, y también a ver como podría forzar la descarga desde el applet(me imagino que java tendrá algún código que lo haga, ¿no?).
Bueno, gracias de nuevo, y un saludo.
Yolanda

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas