Internet Explorer 9 nutzt nicht die Datei-Namen für die inline-Anlagen
Verwende ich diesen code in ein Servlet setzt den Dateinamen der inline-PDF-Dokument:
response.setContentType("application/pdf");
response.setContentLength((int) file.length());
response.setHeader("Content-disposition", "inline; filename=\"" + file.getName() + "\"");
Allerdings funktioniert dies nicht im IE 9: "Speichern unter..." - Dialog zeigt nur den letzten Pfad-Teil der URL, gefolgt von ".pdf" (für "/some/url/Rechnung" es ist "Rechnung.pdf")
Ist dies ein bekannter bug? Gibt es eine Abhilfe?
- Was bedeutet "funktioniert nicht" bedeutet genau in diesem Zusammenhang - was der name, sind Sie immer statt? Welche Art von Namen haben Sie versuchen, können Sie ein Beispiel nennen?
- Versuchen Sie, ohne die Anführungszeichen, oder durch die Verwendung von einfachen Anführungszeichen um den Dateinamen
- Möglich, Duplikat der stackoverflow.com/questions/151079/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das ist in der Tat Standard-Verhalten des IE. Es nicht die
filename
Attribut desContent-Disposition
header in irgendeiner Weise zur Vorbereitung eines Standard-Dateiname für die Speichern Als. Stattdessen verwendet es den letzten Teil der Anfrage-URL path info.Empfehle ich umschreiben Ihre Servlet und/oder die links in einer solchen Weise, dass der gewünschte Dateiname angegeben wird, als Teil der request-path-info statt, wie zum Beispiel ein request-parameter.
So, statt
oder
müssen Sie
Beim Mappen auf ein URL-Muster der
/pdfservlet/*
können Sie, wenn notwendig, schnappen Sie sich den Teil mit dem Namen dynamisch in das servlet wie folgt (zum Beispiel, suchen Sie die gewünschte PDF-Datei und/oder zum festlegen der richtigenfilename
im header für die mehr anständige webbrowsers):Dies ist übrigens unabhängig davon, ob es diente inline oder als Anlage.