2013-02-11 31 views
13

Ich gebe eine PDF-Datei in einem Web-Browser (IE8) HttpContext.Response.writefile(fileName) aus und es funktioniert super. Wenn ich versuche, die Datei zu speichern, wird der Name des Aschx-Handlers als Standard angegeben. Ich würde gerne den richtigen Namen weitergeben.PDF-Handler: Content-Disposition Dateiname

Ich versuchte Header-Informationen wie folgt hinzuzufügen:

context.Response.AddHeader("content-disposition", "attachment; filename=" + fileInfo.Name); 

Und es funktioniert, aber ich möchte nicht, um den Benutzer wählen müssen zwischen öffnen und speichern, möchte ich die Datei normal öffnen und wenn der Benutzer wählt, um es zu speichern, dann würde der Dialog ihm den Standarddateinamen geben.

Ich habe auch versucht:

context.Response.AddHeader("content-disposition", "inline; filename=" + fileInfo.Name); 

Oder einfach nur, wie Scott Hanselman suggested in his blog.

context.Response.AddHeader("content-disposition", "filename=" + fileInfo.Name); 

Keine von denen für mich arbeiten. Hat jemand irgendwelche Ideen?

Antwort

2

Bei INLINE scheint Internet Explorer den letzten Parameter in der URL zu verwenden, um den Dateinamen zu erstellen. Zum Beispiel, wenn Ihre URL ist http://doc.com/131231231 IE werden Sie aufgefordert, die Datei als 131231231.pdf Wenn Sie einen Dateinamen zum Beispiel foo_131231231.pdf müssen Sie sparen, indem Sie diese URL des IE-Hack kann: http://doc.com/foo_131231231 Sie leiden können sich ändern Ihre App ein wenig zu erwarten, solche hässlichen Parameter, aber am Ende wird Ihre App wird funktionieren, wie Sie erwarten.

2

Ich stieß auch auf dieses Problem. Was half mir war auch die content zu application/pdf (statt application/x-pdf, die veraltet ist) gesetzt

response.setContentType("application/pdf"); 
response.setHeader("Content-disposition", "inline; filename=\"Report.pdf\"");