Buscar
Social
Ofertas laborales ES

Foro sobre Java EE > Problema para subir imagenes al proyecto con Primefaces

Hola: alguien puede decirme como subo imagenes al proyecto. Lo he trabajado en eclipse, primefaces, spring y el problema que tengo es que cuando me sale el popup para seleccionar la imagen a subir pareciera que si la sube solo que cuando reviso la carpeta imagen del proyecto donde quiero que se almacene, la misma no esta. En la base solo quiero que se almacene la ruta de la imagen. El codigo es el siguiente:
En crearEspecificacionProducto.xhtml tengo parte del siguiente codigo--->
<h:outputLabel value="Imagen" />
<h:panelGroup>
<p:fileUpload auto="true" value="#{espBean.imagen}" mode="advanced" fileUploadListener="#{espBean.handleFileUpload2()}"
update="graImPro" sizeLimit="512000" allowTypes="/(\.|\/)(gif|jpe?g|png)$/"
cancelLabel="Cancelar" uploadLabel="Subir Foto"/>
<p:graphicImage id="graImPro" width="150" height="120" value="resources/imgProductos/#{espBean.imagen}"/>
</h:panelGroup>

Luego en el Bean correspondiente tengo el siguiente metodo:
public void handleFileUpload2(FileUploadEvent event) {//--- pareciera que no lee el evento FileUploadEvent
try {
UploadedFile file = event.getFile();
//application code
String destination;

HashMap<String, String> map =UtilJsf.getMapPathFotosProducto();

destination = map.get("path");
if (destination == null) {
System.err.println("warning.noseobtuvopath");
} else {
imagenURL = map.get("url") + file.getFileName();
imagen = file.getFileName();

if (UtilJsf.copyFile(file.getFileName(), file.getInputstream(), destination)) {
System.out.println("se copio la imagen...");
}
}

} catch (Exception e) {
System.err.println("handleFileUpload()" + e.getLocalizedMessage());

}
}

marzo 12, 2015 | Unregistered CommenterMarysol

Estimada Marysol.

Seria bueno que el momento de hacer debug verifique en relidad esté ingresando en el método handleFileUpload2. si no es asi recomiendo colocar dentro de un <h:form></h:form> su porción de código en el xhtml.
Otra cosa que podría verificar son los permisos de lectura y escritura que tiene su path.
Saludos cordiales

marzo 13, 2015 | Unregistered CommenterDavid

Hola David... ya pude solucionarlo. Cuando obtengo el path, especifico bien que sea una direccion fisica del proyecto ya que lo obtenia con el getPath del eclipse que era una ruta temporal del proyecto por tal motivo nunca aparecia la ruta ni la imagen.
En el Util tengo el siguiente metodo:
public static HashMap<String, String> getMapPathFotosProducto() {
try {
HashMap<String, String> map = new HashMap<String, String>();
//--se cambio a una carpeta fisica y funciona 16/03/2015
String path = "c:\\practicaEclipseDos\\VentasOnline\\WebContent\\resources\\imgProductos\\";
map.put("path", path);
map.put("url", "WebContent\\resources\\imgProductos\\");
return map;
} catch (Exception e) {
System.err.println(" getMapPathFotosProducto() " + e.getLocalizedMessage());
}
return null;
}

Este es Bean de Especificacion de Producto:
public void handleFileUpload2(FileUploadEvent event) {
try {
UploadedFile file = event.getFile();
System.out.println("archivo seleccionado "+file.getFileName());
//application code
String destination;

HashMap<String, String> map =UtilJsf.getMapPathFotosProducto();

destination = map.get("path");//----> este metodo obtiene la carpeta fisica del proyecto y listo
if (destination == null) {
System.err.println("warning.noseobtuvopath");
} else {
System.err.println("se obtuvo path..."+destination);
imagenURL = map.get("url") + file.getFileName();
imagen = file.getFileName();

if (UtilJsf.copyFile(file.getFileName(), file.getInputstream(), destination)) {
this.especificacion.setFoto(destination+file.getFileName());//---> agregado para almacenar el path de la imagen a la base de datos
System.out.println("se copio la imagen...");
}
}

} catch (Exception e) {
System.err.println("handleFileUpload()" + e.getLocalizedMessage());

}
}

marzo 16, 2015 | Unregistered CommenterMarysol