Envío de Respuestas de php a un applet

Muchas gracias por la explicación, aunque creo que no me has entendido la pregunta. Lo aclaro:
Tengo un applet que envía a través de URLConnection a un php que se
encuentra en el servidor http......, el nombre de un directorio. Esto
lo hace a través de:
output= new DataOutputStream(connDwl.getOutputStream());
output.write(datos);
...
El php lo recibe con $_POST. Éste tiene que acceder al servidor y
obtener todos los subdirectorios y ficheros que en ese directorio se
encuentra y mandarle como respuesta al applet estos datos.
El applet ya está cargado, y no puedo introducirlo como parámetro
ya que los datos los necesito en respuesta de una petición post.
Ya realicé un applet que hacía lo contrario: coge de local una
serie de ficheros y los envía mediante POST a un php que los sube.
Ahora necesito que el php responda al applet enviando los ficheros.
¿Existe alguna posibilidad de hacer eso?
Lo único que he podido encontrar al respecto es el "echo" de php,
y a través de ello, envío las rutas completas de los ficheros (en forma
de string). Después en el applet utilizo lo siguiente para leer los datos de entrada:
input = new BufferedReader(new InputStreamReader(connDwl.getInputStream()));
String str;
while (null != ((str = input.readLine()))) { ....}
Pero necesitaría que fueran los propios ficheros los que se pasaran al applet y no el path en forma de string, ya que
tengo que realizar otras funciones en el applet que implica el manejo
de los ficheros..
Muchas gracias de nuevo, YOlanda

1 respuesta

Respuesta
1
Ahora creo que entiendo mejor el problema.
En principio seria posible hacerlo. Desde el Applet haces la solicitud y desde el PHP has de devolver una respuesta de tipo POST de múltiples datos, que puede contener ficheros. No es sencillo, pero veo que dominas, así que te apunto la solución, aunque habrá que desarrollarla.
Debes actuar primero con la orden header() para enviar la cabecera HTTP correcta:
header("Content-type: multipart/form-data");
Esto indicará que la respuesta va a presentar diferentes partes. Entonces has de volcar, con echo u otro sistema similar la información en el orden adecuado. Aquí te adjunto una plantilla de como debería quedar la información:
========================
POST /path/al/script.php HTTP/1.0
Host: example.com
Content-type: multipart/form-data, boundary=AaB03x
Content-Length: $requestlen
--AaB03x
content-disposition: form-data; name="field1"
$field1
--AaB03x
content-disposition: form-data; name="field2"
$field2
--AaB03x
content-disposition: form-data; name="userfile"; filename="$filename"
Content-Type: $mimetype
Content-Transfer-Encoding: binary
$binarydata
--AaB03x--
==========================
En PHP existe una función file_get_contents() que te permitirá volcar el contenido de un fichero en el apartado $binarydata
Lo que recibirá el Applet es el resultado como si se hubiera enviado unos ficheros y datos mediante un formulario usando POST.
Como ves no es inmediato, pero es posible.
Hola de nuevo,
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. Esto lo 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?
Mil Gracias de nuevo por tu interés.
Un cordial saludo, Yolanda

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas