2012-03-31 6 views
2

Der folgende Code funktioniert wunderbar abgesehen von der Tatsache, dass die Content-Disposition Header nie festgelegt ist und die Datei mit einem falschen Namen heruntergeladen wird.Content-Disposition Header wird nicht auf einen Datei-Download festgelegt

Ich habe die Java-APIs durchsucht, kann aber keine Möglichkeit sehen, den Header zu setzen. Ich habe versucht, es in der Funktion anwenden, aber das Antwortobjekt ist an diesem Punkt null. Ich habe versucht, die Überschrift in der Indexfunktion zu setzen, aber sie wird ignoriert. Kann mir jemand erklären, wo ich falsch liege? Danke vielmals.

package controllers; 

import java.io.File; 
import java.util.concurrent.Callable; 

import play.libs.Akka; 
import play.libs.F; 
import play.libs.F.Function; 
import play.mvc.Controller; 
import play.mvc.Result; 

public class Application extends Controller 
{ 
    public static Result index() 
    { 
     F.Promise<File> promiseOfFile = Akka.future(new Callable<File>() 
     { 
      public File call() 
      { 
       return new File("temporaryfilename.txt"); 
      } 
     }); 

     response().setHeader("Content-Disposition", "attachment; filename=\"actualfilename.txt\""); 

     return async(promiseOfFile.map(new Function<File, Result>() 
     { 
      @Override 
      public Result apply(File file) 
      { 
       return ok(file); 
      } 
     })); 
    } 
} 

Antwort