2016-04-18 9 views
2

Ich habe eine Spring REST-Anwendung, einer der Endpunkte ist ein Download-Link, wo die heruntergeladene Datei im laufenden Betrieb generiert wird.Spring REST-Datei Download vom Server

Es funktioniert alles außer der Dateiname ist falsch.

Hier ist die relevanten Teile der Steuerung:

@RestController 
@RequestMapping("/export") 
public class ExportREST { 

    @RequestMapping(method=RequestMethod.GET) 
    public void export(HttpServletResponse response) throws Exception { 

     //stuff omitted... 
     writeCsvResponse(response); 
    } 

    private void writeCsvResponse(HttpServletResponse response) throws IOException { 
     String fileName = "db.export."+dateFormat.format(new Date()); 
     response.setContentType("application/octet-stream"); 
     response.setHeader("Content-Disposition:", "attachment;filename=" + "\"" + fileName + "\""); 

     //write stuff to response... 

     response.setContentLength(totalLength); 
     response.setBufferSize(1024); 
     response.flushBuffer(); 
     pout.close(); 
    } 
} 

Also, was ich will, ist ein Dateiname mit einem generierten Zeitstempel, sondern tatsächlich der Dateiname ist immer export, vermutlich ist es es aus der URL zu bekommen.

Habe ich etwas verpasst?

+2

Sie ohne Doppelpunkt versucht haben, nach Content-Disposition? – rpozarickij

+0

Funktioniert jetzt, danke. Fügen Sie die Antwort hinzu, wenn Sie möchten, und ich akzeptiere. Sollte das entdeckt haben. Einfach kopiert und eingefügt, ohne wirklich darüber nachzudenken D'oh. – NickJ

Antwort

3

Am Ende von "Content-Disposition:" steht ein Doppelpunkt. Ohne es sollte der Dateiname abgeholt werden.