Foros del Web » Programación para mayores de 30 ;) » Java »

Cliente JAVA para enviar ficheros vía HTTP a servidor PHP

Estas en el tema de Cliente JAVA para enviar ficheros vía HTTP a servidor PHP en el foro de Java en Foros del Web. Hola a todos, es la primera vez que posteo, espero hacerlo todo bien ;) Resulta que estoy tratando de implementar una aplicación en java que ...
  #1 (permalink)  
Antiguo 09/04/2009, 17:17
 
Fecha de Ingreso: abril-2009
Mensajes: 6
Antigüedad: 15 años
Puntos: 0
Cliente JAVA para enviar ficheros vía HTTP a servidor PHP

Hola a todos, es la primera vez que posteo, espero hacerlo todo bien ;)

Resulta que estoy tratando de implementar una aplicación en java que envíe un fichero a un servidor PHP. El fichero es siempre el mismo (smiley.jpg). Este es el código:

Código:
import java.net.*;
import java.io.*;

public class envia {

 public static void main(String[] args) {
   try
   {
    //Leo fichero
    String filename="smiley.jpg";
     BufferedReader reader = new BufferedReader(new FileReader(filename));
     String lineaTotal="";
     String linea = reader.readLine();
     while (linea != null)
        {
           lineaTotal = lineaTotal + linea;
           linea = reader.readLine();
        }

       String envio=lineaTotal;
       System.out.println("TAMAÑO KILOBYTES: "+(lineaTotal.length()/1024));
       reader.close();

	 //Propiedades conexión
     String URLdestino ="ruta_al_servidor"; //ruta donde está el script PHP
     URL postURL = new URL(URLdestino);
     HttpURLConnection con = (HttpURLConnection) postURL.openConnection();
     con.setUseCaches(false);
     con.setDoOutput(true);
     con.setDoInput(true);
     con.setRequestMethod("POST");
     con.setRequestProperty("Content-Type", "multipart/form-data");



	 //Envío de datos
         OutputStream stream = con.getOutputStream();
	 DataOutputStream dos = new DataOutputStream(stream);
         System.out.println("DATOS ENVIADOS AL SERVIDOR!");
	 dos.writeBytes(envio);
	 dos.close();

     //Respuesta del servidor
     linea="";
     String resultado="";
     BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
     while ((linea = in.readLine()) != null) resultado+=linea;
     in.close();
     System.out.println("RESPUESTA DEL SERVIDOR:");
     System.out.println(resultado);
	 }
	 catch(Exception e){
     System.out.println(e);
	}
  }
}
Para comprobar que el PHP ha recibido correctamente el fichero, simplemente ejecuto lo siguiente:

print_r($_FILES);

pero la respuesta que recibe el cliente java es "Array()", es decir, que no ha recibido nada. En cambio, si envío el fichero al mismo script mediante un formulario HTML, todo va correctamente (es decir muestra un Array con la información del fichero subido).

Si alguien sabe ver que hay de erróneo en el código java, me salvará de una buena ;)

También había pensado enviar mediante post en un string el contenido del fichero para que luego PHP cree un archivo con ese contenido, pero al hacer un strlen de lo recibido, me dice que el PHP solo ha recibido 393 (o algo así) bytes, no se si es que hay algo malo en el código, es el protocolo en sí que solo permite enviar strings de hasta este tamaño, o es cuestión de alguna restricción del servidor.

Gracias a todos por adelantado

Última edición por KarlasBCN; 12/04/2009 a las 18:46
  #2 (permalink)  
Antiguo 13/04/2009, 11:29
 
Fecha de Ingreso: abril-2009
Mensajes: 6
Antigüedad: 15 años
Puntos: 0
Respuesta: Cliente JAVA para enviar ficheros vía HTTP a servidor PHP

Nadie lo sabe? :(
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 16:16.