0

Ich bekomme "System kann den angegebenen Pfad nicht finden." wenn ich versuche, ein Bild in den Projektordner innerhalb der Ressourcen hochzuladen. Hier ist meine Projektstruktur:Spring Boot | Laden Sie ein Bild in relativen Pfad in Ressourcen

| Projekt | src | Haupt | Ressourcen | META-INF.resources | Bilder

Project Structural Hierarchy can be seen here in the image format.

ich den Weg als

definiert haben
String path = "\\resources\\images\\" + imageName; File file = new File(path); 
    try { 
     InputStream is = event.getFile().getInputstream(); 
     OutputStream out = new FileOutputStream(path); 
     byte buf[] = new byte[1024]; 
     int len; 
     while ((len = is.read(buf)) > 0) 
      out.write(buf, 0, len); 
     is.close(); 
     out.close(); 
    } catch (Exception e) { 
     System.out.println(e); 
    } 

Was kann der genaue Pfad zum Ordner Bilder unter META-INF.resources Director sein y?

+0

Haben Sie 'ServletContext' versucht? – fiskra

+0

'String path = context.getRealPath (" resources/images "+ imageName);' sollte funktionieren, nachdem Sie 'ServletContext' erhalten haben – fiskra

Antwort

0

Folgendes sollte gut funktionieren:

//App.java 
    String path = "\\META-INF.resources\\images\\" + imageName; 
    InputStream is = App.class.getClassLoader().getResourceAsStream(

        path); 

In einer Nußschalen, verwenden "getClassLoader() getResourceAsStream()." Anstelle von Fileinputstream oder Outputstream.

+0

\ META-INF.resources \ images \ funktionierte nicht wirklich für meinen Fall. –

+0

Ist das nicht ein Maven-Projekt? –

+0

Ja. Es ist ein Maven-Projekt. Aber ich bin immer noch konfrontiert "System kann den angegebenen Pfad nicht finden." –

0

Following arbeitete für mich. In application.properties definiert ich meinen Weg String als:

image.path = src/main/resources/META-INF/resources/images/uploads/

Hier meine upload Funktion in einer Klassendatei ist.

@Autowired 
private Environment environment; 

public String uploadImg(FileUploadEvent event, String imagePrefix) { 

    String path = environment.getProperty("image.path"); 

    SimpleDateFormat fmt = new SimpleDateFormat("yyyyMMddHHmmss"); 
    String name = fmt.format(new Date()) 
      + event.getFile().getFileName().substring(
      event.getFile().getFileName().lastIndexOf('.')); 
    name = String.format("%s%s" ,imagePrefix ,name); 
    String finalPath = String.format("%s%s" ,path ,name); 
    System.out.println("image is going to save @ " +finalPath); 

    File file = new File(finalPath).getAbsoluteFile(); 

    try { 
     InputStream is = event.getFile().getInputstream(); 
     OutputStream out = new FileOutputStream(file); 
     byte buf[] = new byte[1024]; 
     int len; 
     while ((len = is.read(buf)) > 0) 
      out.write(buf, 0, len); 
     is.close(); 
     out.close(); 
    } catch (Exception e) { 
     System.out.println(e); 
    } 
    return name; 
} 

Ich bin nicht sicher, ob es bei der Produktion funktioniert oder nicht. Grundsätzlich bekomme ich den absoluten Pfad des Projekts und hänge dann meinen relativ extrahierten Pfad an. Korrigiere mich, wenn ich falsch liege.

Verwandte Themen