Firefox und Content-Disposition Header

8

Ich habe ein Problem mit dem Namen eines Anhangs. Wenn ich die Seite auf Google Chrome anrufe, gibt es die Datei mit dem richtigen Namen und der Erweiterung zurück. Ich habe es mit Internet Explorer getestet und es funktioniert auch gut. Das Problem liegt nur bei Firefox. Ich rufe die Site auf und es gibt das erste Wort auf dem Dateititel und keine Erweiterung zurück.

Wenn ich beispielsweise eine Datei namens "Mein Bericht.docx" haben möchte, wird eine Datei namens "Mein" angezeigt. Ich habe gegoogelt und es stellt sich heraus, dass dies ein häufiges Problem mit Leuten ist, weil Browser die Header unterschiedlich lesen. Sie sagten, das Problem sei, den Dateinamen zu zitieren:

Content-Disposition: attachment; filename=My Report.docx

ist jetzt: (notieren Sie die Anführungszeichen)

Content-Disposition: attachment; filename="My Report.docx"

Das hat jedoch nicht für mich funktioniert.

Am Chrom gab es "My Report.docx" (eigentlich mit den Anführungszeichen) zurück. Firefox gab eine ungerade Datei zurück, die die richtige Erweiterung und den richtigen Namen hatte und noch keine Anführungszeichen, aber sie konnte nicht ausgeführt werden. Es war die richtige Dateigröße, die richtige Erweiterung und der richtige Name, aber es konnte nicht ausgeführt werden. Außerdem gibt es ein Leerzeichen vor und nach dem Dateinamen zurück.

    
Garrett R 06.02.2012, 00:30
quelle

2 Antworten

4

Dies sollte wie erwartet funktionieren, hier ist eine weitere SOQ mit dem gleichen Problem:

und auch die Mozilla-Seite (ich nehme an, du hast auf diese verwiesen):

Ich kenne die Details Ihres serverseitigen Codes nicht, aber hier einige Dinge, die Sie bestätigen / versuchen sollten:

  • Wenn Sie PHP auf dem Server haben, können Sie den Code vom ersten Link oben versuchen? Wenn nicht, können Sie wahrscheinlich etwas im Internet in Ihrer Sprache finden. Auf diese Weise können Sie feststellen, ob das Problem in Ihrem Code oder an einem anderen Ort (Server - Setup, Browser usw.) Auftritt.
  • Erfolgt dies auf anderen Client-Computern (d. h. wo Sie den Download versuchen) oder nur auf diesem? Vielleicht möchten Sie andere zur Bestätigung versuchen.
  • Funktioniert das in IE / Safari oder einem anderen Browser? Sie können es sogar mit wget oder curl über die Befehlszeile oder so ähnlich versuchen.
  • Liefern Sie auch den Header Content-Type korrekt?
  • Können Sie versuchen, eine andere Datei oder eine Datei eines anderen Typs herunterzuladen, z. a .png oder a .xls ? In der Tat wäre es wahrscheinlich am einfachsten, eine einfache Textdatei ( text/plain ) auszuprobieren und sie dann von dort zu übernehmen.

Hoffe, das hilft.

    
icyrock.com 06.02.2012, 01:37
quelle
4

Ich weiß, das ist eine sehr alte Frage, aber ich hatte kürzlich das gleiche Problem. Die Lösung ist entweder

  1. Kodieren Sie Ihren Dateinamen nach RFC2184 oder
  2. Wenn Sie in Ihrem Dateinamen keine Sonderzeichen haben, geben Sie diese in der Inhaltsdispositions-Zeichenfolge an.

Da Sie bereits 2 probiert haben, können Sie versuchen, 1 zu verwenden und zu sehen, wie das funktioniert.

Normalerweise benutze ich die Klasse ContentDisposition , um meine Kopfzeile für mich zu generieren:

%Vor%

Hoffe, das hilft.

    
Asad Saeeduddin 27.11.2012 06:39
quelle