Bild auf JSP-Seite anzeigen mit dynamischem Dateipfad

Cryten

Grünschnabel
Hi,

ich bin neu hier im Forum und habe schon mehrere Tage versucht mit diversen Forenbeiträgen und Tutorials mein Problem zu lösen, leider ohne Erfolg.

Ich muss ein Anmeldesystem entwickeln, in dem man seinen Namen und Matrikelnummer eintragen kann und ein Benutzerbild hochladen kann.

Das Bild soll von einem beliebigen Verzeichnis auf der Festplatte eingelesen werden, auf der JSP-Seite des Clients direkt angezeigt werden und dann soll es an anderer Stelle wieder abgespeichert werden (direkt auf dem Server oder als Byte-Array in einer Datenbank)

Das Einlesen ist mit einem FileChooser realisiert und dieser gibt ja einen dynamischen Dateipfad wieder und wenn ich diesen zum Einlesen des Bildes in ein "Image" verwende, kommt meistens eine NullPointerException oder FileNotFound aber wenn ich das Bild mit einem statischen Pfad einlese, klappt alles und ich kann es zwischenspeichern und anzeigen. Das gleich gilt für das Abspeichern des Bildes (statischer Pfad geht, dynamischer nicht)

Hier der Code der beiden wichtigen Methoden:
PHP:
public String realImageFilePath;
public String relativeImageURL = "/resources/";

public String picSearch_btn_action() throws FileNotFoundException, IOException {
        ServletContext theApplicationsServletContext = (ServletContext)   this.getExternalContext().getContext();
        this.realImageFilePath = theApplicationsServletContext.getRealPath(relativeImageURL);

        fc = new JFileChooser();

        fc.setFileSelectionMode(JFileChooser.FILES_ONLY);
        File currentDir = new File("C:/Users/Marcus/Pictures/");
        fc.setCurrentDirectory(currentDir);

        int returnVal = fc.showOpenDialog(null);

        if (returnVal == JFileChooser.APPROVE_OPTION) {
                file = fc.getSelectedFile();
                
                imageURL = file.getAbsolutePath().toString();
                picPath_txt.setText(imageURL);
        }

        return "";
    }

public String picUpload_btn_action() {
        try {
            //vorher statisch
            //Image img = new ImageIcon(ImageIO.read(new File("C:/Users/Marcus/Pictures/auto2.jpg"))).getImage();
            Image img = new ImageIcon(ImageIO.read(new File(imageURL))).getImage();
            BufferedImage outImg = new BufferedImage(img.getWidth(null), img.getHeight(null), BufferedImage.TYPE_INT_RGB);

            Graphics g = outImg.getGraphics();
            g.drawImage(img, 0, 0, null);
            g.dispose();

            ImageIO.write(outImg, "jpeg", new File(realImageFilePath));

        } catch (IOException e) {
            e.printStackTrace();
        }

        if (imageURL != null) {
            pic_img.setUrl(relativeImageURL);
        }

        return "";
    }
 

Neue Beiträge

Zurück