Hola que tal,
Dentro de un proyecto que estoy realizando necesito obtener una imagen del ordenador y guardarla en una base de datos, para ello utilicé el campo input type=file.
Para guardarla utilizo la siguiente función:
public boolean guardarfoto(int idProducto, String imagen) {
FileInputStream fis = null;
try {
File file = new File("C:\\" + imagen);
fis = new FileInputStream(file);
cpsql.conectar();
connection = ConexionPgSQL.getCn();
PreparedStatement pstm = connection.prepareStatement("UPDATE productos SET imagen_producto = ?, nombre_imagen = ? where id_producto = ?");
pstm.setBinaryStream(1, fis, (int) file.length());
pstm.setString(2, imagen);
pstm.setInt(3, idProducto);
pstm.execute();
System.out.println("Agregando imagen: " + pstm.toString());
pstm.close();
return true;
} catch (FileNotFoundException | SQLException e) {
Logger.getLogger(ControladorProducto.class.getName()).
log(Level.SEVERE, null, e);
}
return false;
}
Mi problema es que esta funcion solo me permite guardar una imagen que se encuentre dentro del directorio especificado, en este caso C:\
, pues si en la funcion reemplazo el File file = new File("C:\\" + imagen);
por File file = new File(imagen);
al parecer trata de buscar la ruta internamente en el proyecto, y no en el directorio del ordenador, y quisiera por lo tanto reemplazar ese directorio estático por uno dinámico para no limitar al cliente a que tenga que mover la imagen a la ruta especificada para que no marque error al guardar.
Para esto, estoy trabajando en un projecto Web usando NetBeans 8.0.2, JSPs y Servlets.