Im Internet finden sich einige Lösungsvorschläge für diese Art von Problem. Nicht alle Lösungen funktionieren überall und für alle Browser, aber einige Lösungen garantieren zumindest "sichere Ergebnisse", auch wenn sie den ursprünglich "vorgeschlagenen" Dateinamen nicht für alle Clients beibehalten können:
Der erste Blick:
Inhalt-Disposition: attachment; filename=Mein neues Dokument.pdf;
FF36: Bietet die Datei "My" zum Download an :-( IE6: Zeigt "Mein neues Dokument.pdf" an, aber beim Öffnen kann es als "Mein neues Dokument[1].pdf" erscheinen. IE8: Zeigt "Mein_Neues_Dokument.pdf" an, kann aber auch "[1]" anhängen wie IE6. ACHTUNG: Beim Speichern des Dokuments behält der IE den angezeigten Namen bei, unabhängig davon, welchen Namen er beim direkten Öffnen an die ausgewählte Anwendung weitergibt!
Erste Verbesserung:
Content-Disposition: attachment; filename="Mein neues Dokument.pdf";
FF36: Funktioniert wie erwartet, d. h. zeigt "Mein neues Dokument.pdf" an. IE6+IE8: Keine Änderung, genau wie vorher.
Zweite Änderung:
Inhalt-Disposition: attachment; filename="Mein%20Neues%20Dokument.pdf";
(Leerzeichen durch %20 ersetzen, wie bei der URL-Kodierung, und doppelte Anführungszeichen beibehalten).
FF36: Zeigt, was zurückgeschickt wurde, nämlich "Mein%20Neues%20Dokument.pdf". Nicht schön. IE6+IE8: Zeigt "Mein neues Dokument.pdf" an, gibt aber "Mein%20neues%20Dokument.pdf" aus.
Dritte Variante:
Inhalt-Disposition: attachment; filename=Mein%20neues%20Dokument.pdf;
(Entfernen Sie die Anführungszeichen, aber behalten Sie %20.)
FF36: Wie oben - nicht schön. IE6+IE8: Wie oben - auch nicht so schön.
Schlussfolgerung:
Es scheint, dass zumindest die vorgestellten Methoden das Problem nicht vollständig und für immer lösen: Weder decken sie alle Situationen für einen Browser ab, noch decken sie alle Browser für ein und dieselbe ausgewählte Situation ab.
Für mich scheint das beste Ergebnis mit umgebenden doppelten Anführungszeichen möglich zu sein: Bei FF36 und IE6 funktioniert das, und bei IE8 (und wahrscheinlich auch bei IE7) ist es zumindest stabil mit den Unterstrichen, d. h. download & save geben denselben Dateinamen wieder wie download & open, außer dem "[1]", das wir sowieso nicht verhindern können.
Schlussbemerkungen
Manche halten es mit dem kleinen König aus Saint-Exupérys "Der kleine Prinz", der besagt, dass ein Kaiser nicht wirklich erwarten kann, dass sein Volk ihm folgt, wenn er etwas verlangt, was einfach nicht möglich ist, was ihn dazu veranlasst, der Sonne zu befehlen, gerade dann auf- und unterzugehen, wenn sie es auf natürliche Weise tut. So wie dieser König in Schwierigkeiten gerät, wenn sein kleiner Planet seine Rotation immer mehr beschleunigt, haben diese Leute aufgegeben und fügen schon auf der Serverseite einfach Unterstriche ein :-)
Aber die RFCs zu diesem Thema und das, was die Browser-Implementierer anbieten, sind manchmal ziemlich schwer zu überwinden.