2017-12-25 18 views
0

I Projektstruktur wie dieses:FileSystemResource: Wie relativen Pfad setzen

enter image description here

und folgende Controller:

@RestController 
public class StubController { 

    @GetMapping("/stub_mapping_template") 
    public FileSystemResource getMappingTemplate() { 
     return new FileSystemResource("/stub/mapping_template.csv"); 
    } 
} 

aber wenn ich in Browser öffnen

localhost:8080/stub_mapping_template 

Nichts Downloads.

im Debug habe ich versucht zu schreiben:

new FileSystemResource("/stub/mapping_template.csv").exists() 

und es kehrt false.

Ich habe versucht zu schreiben:

new FileSystemResource("stub/mapping_template.csv").exists() 

aber das gleiche

+0

Hallo, in einem Sevlet müssen Sie getServletContext() verwenden, um das Stammverzeichnis Ihres Projekts zu finden, zB: Paths.get (getServletContext(). GetRealPath ("web-inf/myfile "); –

+0

Es ist ** nicht ** eine Dateisystemressource. Zur Laufzeit befindet sich mapping_template.csv nicht im Dateisystem. Es befindet sich in Ihrer implementierten JAR-Datei, die vom Klassenlader geladen werden kann. –

Antwort

2

Statt FileSystemResource Verwendung ClassPathResource

@GetMapping("/stub_mapping_template") 
    public FileSystemResource getMappingTemplate(HttpServletResponse response) { 
     ClassPathResource classPathResource = new ClassPathResource("/stub/mapping_template.csv"); 
     File file = classPathResource.getFile(); 

     InputStream in = new FileInputStream(file); 

     response.setContentType(....); 
     response.setHeader("Content-Disposition", "attachment; filename=" + file.getName()); 
     response.setHeader("Content-Length", String.valueOf(file.length())); 
     FileCopyUtils.copy(in, response.getOutputStream()); 
     response.flushBuffer(); 
} 
+0

Es funktioniert, aber der Browser rendert meine CSV-Datei und nicht herunterladen.Wie kann ich diese Datei herunterladen? – gstackoverflow

+0

, um Sie herunterladen nede, um einen Stream als Antwort ('HttpServletResponse') – pvpkiran

+0

können Sie mein Beispiel ändern? – gstackoverflow

-1

Perhapsly FileSystemResource nimmt vollständige URL der Datei führen. Eine der Techniken ist, kopieren Sie den Pfad von "Arbeitsplatz" auf Ihrem PC. Und weiter löschen von Anfang der URL