Puedo usar siguientes RESTO de servicios (de este tutorial) para realizar la carga de archivos desde varios número de clientes a mi GlassFish server, con el jersey de varias partes de implementación:

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import com.sun.jersey.core.header.FormDataContentDisposition;
import com.sun.jersey.multipart.FormDataParam;
@Path("/fileupload")
public class UploadFileService {
@POST
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response uploadFile(
@FormDataParam("file") InputStream uploadedInputStream,
@FormDataParam("file") FormDataContentDisposition fileDetail) {
String uploadedFileLocation = "c://uploadedFiles/" + fileDetail.getFileName();
//save it
saveToFile(uploadedInputStream, uploadedFileLocation);
String output = "File uploaded via Jersey based RESTFul Webservice to: " + uploadedFileLocation;
return Response.status(200).entity(output).build();
}
//save uploaded file to new location
private void saveToFile(InputStream uploadedInputStream,
String uploadedFileLocation) {
try {
OutputStream out = null;
int read = 0;
byte[] bytes = new byte[1024];
out = new FileOutputStream(new File(uploadedFileLocation));
while ((read = uploadedInputStream.read(bytes)) != -1) {
out.write(bytes, 0, read);
}
out.flush();
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}

Este código funciona bien para mí, pero me di cuenta siguiente:

  1. primero se carga el archivo en algún lugar en el servidor
  2. el método uploadFile(…) se activa con un InputStream a la
    archivo subido, así que puedo hacer una copia de éste en la dirección deseada mediante
    saveToFile(…)

Mis preguntas son:

  • donde está el archivo (ver (1)) almacenan inicialmente?
  • Cómo eliminar el archivo subido a recursos gratuitos?

ACTUALIZACIÓN de 1

Adjunta el InputStream de volcado:
Carga de archivos utilizando el servicio REST

Lo extraño aquí – .tmp archivo de captura de pantalla es de 0 bytes de tamaño!
El .tmp se elimina después de la salida.close()

  • Hola por favor puede compartir el lado cliente de la aplicación, quiero saber cómo enviar archivos a este servicio? gracias
  • ¿el código anterior funciona para usted? Ya que no está funcionando para mí. Puede usted por favor me ayude
  • puede usted por favor comparta su excepción o alguna descripción de lo que debe hacer y lo que no funciona?
InformationsquelleAutor filip_j | 2013-07-12

1 Comentario

  1. 3

    El archivo subido es, probablemente, sea guardado en la memoria (lo que significa que será liberado cuando el inputstream es limpiar por la gc) o se almacena en el sistema temporal predeterminada de la carpeta. (Probablemente la misma carpeta devuelto por System.getProperty("java.io.tmpdir"), lo que significa que se limpia cada vez que limpie los archivos temporales de tu sistema de archivos.

    La ubicación exacta depende de la estructura que se encarga de la restservices para usted. En su caso parece ser jersey.

    No sé de donde jersey guarda estos archivos. Se puede intentar buscar en el inputstream para ver de qué tipo es y donde está almacenado.

    • Gracias por tu respuesta! He actualizado mi post

Dejar respuesta

Please enter your comment!
Please enter your name here