2016-04-21 14 views
1

wir eine sehr stark vereinfachte API, die auf Anfrage eine Dateiwie Anlegesteg Handler konfigurieren einen Namen auf Anfrage zu erstellen, eine Datei herunterzuladen

Server sendet:

public class Server { 
    public static void main(String... args) throws Exception { 
     // start the server 
     System.out.println("starting jetty..."); 
     final org.eclipse.jetty.server.Server server = new org.eclipse.jetty.server.Server(80); 
     server.setHandler(new Handler()); 
     server.start(); 
     System.out.println("jetty server has started"); 

    } 
} 

und der Handler:

public class Handler extends AbstractHandler { 
    @Override 
    public void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) 
      throws IOException, ServletException { 

      if(target.matches("/get")){ 
        File file = getFile(); //assume filename is myFile.zip 
        byte[] bytes = FileUtils.readFileToByteArray(file); 
        response.getOutputStream().write(bytes); 
        response.flushBuffer(); 
      } 

    } 
} 

, wenn ich eine Anfrage an localhost:80/get von Browser machen es spart die gewünschte Datei aus, aber es Browsernamen get

Welche Änderungen müssen vorgenommen werden, damit die Anforderung zum Speichern der Datei myFile.zip führt?

Antwort

2

Sie können einen Dateinamen wie folgt hinzu:

response.setHeader("Content-Disposition", "filename=myFile.xyz"); 

Wenn Sie wollen, dass der Browser ein Dialog add attachement zu öffnen sparen:

response.setHeader("Content-Disposition", "attachment; filename=myFile.xyz"); 
+0

thx viel Kumpel, genau das, was ich brauchte, – nafas