2012-05-23 89 views
7

Necesito cargar imágenes y archivos txt desde mi aplicación a un servidor remoto (solo http no ftp) usando java. Mi aplicación está en el marco jsf. Busqué pero no encontré cosas adecuadas. ¿Alguien puede guiarme? De hecho, debo subir archivos a una carpeta especial al servidor remoto. Tengo dos aplicaciones con ruta compartida para cargar archivos, así que para acceder a ellos, decido subir archivos compartidos (como imágenes y textos) a un tercer servidor. La primera aplicación debería cargar archivos a este servidor remoto y la segunda aplicación debería leerlos. Así que mi parte más difícil de esta solución es cargar archivos a este tercer servidor (de hecho servidor remoto) usando http.cómo subir archivos al servidor remoto http usando java?

+0

Cada uno que sugiere Commons FileUpload para enviar el archivo es incorrecta ** **. Se pretende * analizar * una solicitud multipart/form-data del otro lado, no * crear y enviar * solicitud multipart/form-data de su lado. – BalusC

+1

QUIZÁ la pregunta deba hacerse más clara. ¡No espere respuestas precisas con una pregunta tan borrosa! –

+0

Tengo dos aplicaciones con ruta compartida para cargar archivos, así que para acceder a ellos, decido subir archivos compartidos (como imágenes y textos) a un tercer servidor. La primera aplicación debería cargar archivos a este servidor remoto y la segunda aplicación debería leerlos. Así que mi parte más difícil de esta solución es subir archivos a este tercer servidor (de hecho servidor remoto) usando http. – zorro6064

Respuesta

1

Puede usar httpclient.

Envíe los archivos utilizando POST como método.

2

Uso siguiente código:

 byte[] data = bos.toByteArray();//convert ur file into byte[] 
     HttpClient httpClient = new DefaultHttpClient();//Client 
     HttpPost postRequest = new HttpPost(YOUR_SERVER_URL);//Post Request to specified URL 
     ByteArrayBody bab = new ByteArrayBody(data, "a.txt"); 
     MultipartEntity reqEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);// Multipart data 
     reqEntity.addPart("uploadingFile", bab); //adding data to request entity 
     postRequest.setEntity(reqEntity);//adding request entity to post request 
     HttpResponse response = httpClient.execute(postRequest); 
+0

¿dónde debería agregar mi url del servidor remoto? En tu código, ¿qué es "a.txt"? ¿Puedes explicarme más? – zorro6064

+0

agrega ur url servidor en YOUR_SERVER_URL ... a.txt es un archivo que envié 2 servidor –

+0

Utilicé tu código, pero nada se movió y ninguna excepción arroja. ¿Puedes guiarme? No cambié nada en el código anterior. Gracias – zorro6064

6

puede subir el archivo a una carpeta específica, su API de servidor debe soportar eso.

lado del servidor para la recepción de los archivos cargados, puede utilizar http://commons.apache.org/fileupload/

lado del cliente para enviar una solicitud de carga de archivos, puede utilizar https://hc.apache.org/httpcomponents-client-ga/index.html

+0

Carpeta específica en el servidor remoto. mi aplicación se ejecuta en mi servidor, el host de archivos no es donde se ejecuta mi aplicación. – zorro6064

+0

Como dije, el servidor remoto/host de archivos debe proporcionar la API para especificar el destino remoto cuando se carga a través de HTTP – gigadot

-3

hacen

@Autowired 
ServletContext c; 

o tomar objetos

byte[] bytes = file.getBytes(); 

String UPLOAD_FOLDEdR=c.getRealPath("/images"); 
Path path = Paths.get(UPLOAD_FOLDEdR +"/"+ file.getOriginalFilename()); 
Files.write(path, bytes); 
System.out.println(path); 
String Pic_Name =file.getOriginalFilename(); 
+1

¿Podría editar su respuesta para que tenga sentido? Actualmente, el código es difícil de leer, y no está claro cómo se resuelve el problema en cuestión. Por favor explica mejor tu respuesta. – melwil

Cuestiones relacionadas