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

Guardar archivo desde Base de datos a servlet

Estas en el tema de Guardar archivo desde Base de datos a servlet en el foro de Java en Foros del Web. Hola. Mi problema es el siguiente, tengo que subir un archivo por medio de un inputFile del framework JSF, y lo almaceno desde un entity ...
  #1 (permalink)  
Antiguo 08/01/2008, 16:15
Avatar de dmontero7  
Fecha de Ingreso: enero-2008
Mensajes: 3
Antigüedad: 16 años, 3 meses
Puntos: 0
Guardar archivo desde Base de datos a servlet

Hola.
Mi problema es el siguiente, tengo que subir un archivo por medio de un inputFile del framework JSF, y lo almaceno desde un entity de EJB 3.0 a un campo en la base de datos de tipo BLOB, el codigo que tengo para subirlo es el siguiente:

public String insertar_action() {
UploadedFile file = getArchivo();//retorna el archivo del inputFile
FacesContext context =FacesContext.getCurrentInstance();

if (file != null){
InputStream streamFile;
try {
byte[] bFile = new byte[(int)file.getLength()];
streamFile = file.getInputStream();
streamFile.read(bFile);
streamFile.close();
docServicio.setNombre(file.getFilename());
docServicio.setTipoArchivo(file.getContentType());
docServicio.setArchivo(bFile);//docServicio es el entity relacionado con la base de datos, el campo es un array de bytes que es pasado a un BLOB por debajo
DocServicioHelper docServicioHelper = new DocServicioHelper();
docServicioHelper.insertarDocServicio(docServicio) ;

} catch (IOException e) {

}
return "success";
}


Luego para realizar la carga del objeto lo hago desde un servlet simple que lo que hace es obtener el objeto guardado desde el entity tambien y lo despliega por medio del guardar como asi:

protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try {
DocServicioHelper docServicioHelper = new DocServicioHelper();
String idDoc = request.getParameter("documento");
org.efibs.model.servicio.DocServicio docServicio = docServicioHelper.buscarDocServicioPorIdDoc(new Long(idDoc));
byte[] bytes = docServicio.getArchivo();
response.setContentType(docServicio.getTipoArchivo ());
response.addHeader("Content-Disposition","attachment; filename=\""+ docServicio.getNombre() + "\"");
ServletOutputStream out = response.getOutputStream();
out.write(bytes);
out.flush();
out.close();
}catch (Exception ex) {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.write("No se encontro la informacion");
out.flush();
out.close();
ex.printStackTrace();
}
}


El problema es que el archivo que me descarga viene como sin endOfFile, entonces es irreconocible por las aplicaciones que lo abren, ya sea adobe o msword. Y si lo que guardo es un txt si lo carga bien pero incompleto, ya no se que hacer, he intentado casi todo, espero que alguien pueda ayudarme
  #2 (permalink)  
Antiguo 16/01/2008, 12:10
Avatar de dmontero7  
Fecha de Ingreso: enero-2008
Mensajes: 3
Antigüedad: 16 años, 3 meses
Puntos: 0
Re: Guardar archivo desde Base de datos a servlet

Respondiendome a mi mismo, ya logre subirlo, lo que pasa es que habia un problema a la hora de subir el archivo, porque no lo cargaba en un buffer y para guardarlo debe ser por medio de un buffer
  #3 (permalink)  
Antiguo 02/03/2011, 05:44
 
Fecha de Ingreso: febrero-2011
Mensajes: 45
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: Guardar archivo desde Base de datos a servlet

podrías colocar el código y las características que le diste a la tabla en la base de datos
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 00:34.