Ver Mensaje Individual
  #4 (permalink)  
Antiguo 15/12/2014, 12:34
Avatar de HackmanC
HackmanC
 
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 3 meses
Puntos: 260
Sonrisa Respuesta: JSF - FileUpload

Hola,

Cita:
Iniciado por jelastic Ver Mensaje
... ya pude guardar el nombre de la imagen en la bd, ahora solo me falta guardar o copiar la imagen al servidor, el cual es la carpeta del proyecto en la carpeta imgVendedor.
...
mi pregunta ahora es si me das una pista de como llevar la imagen al servidor, a la carpeta imgEmpleados como se muestra en el primer <p:graphicImage
...
Esa parte es simplemente guardar lo que tienes en byData en un archivo. Técnicamente hay demasiadas formas de guardar un archivo que viene de un InputStream en un OutputStream.

Código:
public void handleFileUpload(FileUploadEvent event) {
		file = event.getFile();
		try {
			byData = IOUtils.toByteArray(file.getInputstream());
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
Leer todo el ByteArray en memoria normalmente no es buena idea, (va a ocupar la misma cantidad de bytes en memoria RAM del tamaño original del archivo). Como estás usando Apache IO revisa en la documentación de esa librería que cuenta con un montón de métodos para leer, escribir y copiar archivos.

Para obtener el nombre de la carpeta destino podrías probar a usar:
Código:
FacesContext.getCurrentInstance().getExternalContext().getRealPath("/")...
Pero no estoy completamente seguro que funcione bien.

Un detalle adicional que posiblemente tendrías que tomar en cuenta es cambiarle de nombre al archivo final y guardar ese nombre en la base de datos, y solamente guardas el nombre del archivo original en la base de datos como referencia. Por los motivos lógicos como nombre duplicados, caracteres extendidos, etc. El nombre de archivo "Pruebas:Dos.jpg" en Windows no va a funcionar como posiblemente puedas creer inicialmente, aunque es un nombre completamente válido en Unix.

Saludos,