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.



