2016-04-12 5 views
0

Ist es möglich, zwei verschiedene Content-Disposition-Header in der folgenden Art und Weise nur

oResponse.AddHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(fileName_DBText, Encoding.UTF8).Replace("+", "%20")); 
oResponse.AddHeader("Content-Disposition", "inline=" + HttpUtility.UrlEncode(fileName_DBText, Encoding.UTF8).Replace("+", "%20")); 

Die oben verursacht wurde ich in Chrome ein Problem hinzuzufügen. Kein Problem in IE oder Firefox. Das Entfernen des 2. AddHeader (Hinzufügen der Inline-Direktive) löste das Problem. Ich hatte den Eindruck, dass das Hinzufügen von beiden in Ordnung war und der Browser würde herausfinden, was zu tun ist. Hat jemand eine definitive Antwort darauf?

Antwort

2

a) Nein, Sie können nicht mehrere haben.

b) die Syntax für die zweite ist ungültig; "Inline" nimmt keinen Parameter.

c) "Inline" und "Attachment" sind widersprüchlich; Was versuchst du zu erreichen?

(die Spezifikation RFC ist 6266, btw)

+0

Ich habe mich geirrt gedacht, dass Sie den Dateinamen für heruntergeladene Dateien angeben können, die im Browser gerendert werden und für die der Benutzer zum Öffnen/Speichern/Speichern aufgefordert wird. Ich wusste nicht, dass es entweder/oder war. –

+0

Re. Punkt A) Wir hatten ein Programm, mit dem ein Benutzer auf einen Link klicken konnte, um einen hochgeladenen Anhang anzuzeigen. Die Eingabeaufforderung forderte sie auf, eine Datei zu speichern/zu speichern/zu öffnen, deren Name sich aus der aspx-Seite und der hochgeladenen Dateierweiterung zusammensetzte. Wenn die Seite also mypage.aspx war und die Datei .xls enthielt, wurde sie zur mypage aufgefordert. xls, was falsch war. Wir wollten den echten Dateinamen anzeigen So war die Verwendung der Content-Disposition-Tag der Weg zu gehen, aber ich dachte irrtümlich, dass ich für die Diff-Dateitypen gerecht werden musste, indem Sie Anhang und Inline verwenden. –

+0

Re. Punkt b), als Beispiel wäre das Folgende korrekt, wenn Sie inline - response.Headers.Add ("Content-Disposition", "Inline; Dateiname = myfile.xls") verwenden; –

0

Lösung sehr einfach war: einfach die folgende Codezeile entfernt -

oResponse.AddHeader("Content-Disposition", "inline=" + HttpUtility.UrlEncode(fileName_DBText, Encoding.UTF8).Replace("+", "%20")); 

Wie @Julian Reschike erwähnt, können Sie nicht mehrere Inhalt haben -disposition Header, die mir nicht bekannt waren. In jedem Fall war die Syntax der obigen Zeile falsch, wie ich es hatte. Line entfernt und alles wieder so wie es sein soll.

Verwandte Themen