2012-03-28 12 views
2

In meinem Code erzeuge ich dynamisch mehrere Hyperlinks, die direkte Links zu PDF/Jpg/Bitmap/Png/Docx/Xlsx/Pptx Dateien sind, die auf dem Server gehostet werden.Wie erzwinge ein Hyperlink, um das Öffnen/Speichern-Dialogfeld anzuzeigen, anstatt es im Browser zu öffnen?

der Code sieht etwa so aus.

Das Problem ist, was auch immer Dateibrowser verarbeiten können, es öffnet sich in der gleichen Registerkarte. Gibt es eine Möglichkeit, das Download-Dialogfeld für PDF- und JPEG-/Bitmap-/Png-Dateien zu erzwingen?

Da ich dies auf der Client-Seite brauche, kann ich den Content-Disposition-Weg nicht verwenden, kann es mit Javascript oder einem anderen Markup gemacht werden? Meine Kunden benutzen nur Internet Explorer, so dass es für mich reicht, wenn es nur im IE funktioniert.

+0

Was meinst du, du brauchst diese Kundenseite? Kannst du die .htaccess Datei ändern? – mowwwalker

+0

mögliches Duplikat von [Erzwingen, dass PNG heruntergeladen wird, anstatt es im Browser mit IIS zu öffnen] (http://stackoverflow.com/questions/1040328/force-png-to-download-inst-of-opening-in-browser-with- iis) –

+0

Ich habe auch mit diesem Problem zu kämpfen, indem ich versuche, einen Speichern-Dialog für eine PDF-Datei zu öffnen. Gibt es dies überhaupt nur mit clientseitigem JavaScript und ohne Änderungen auf der Serverseite? – shabdar

Antwort

0

Ich bin mir ziemlich sicher, dass Sie diese Clientseite nicht tun können. Sie könnten jedoch dem Link-Tag das Attribut target = _blank hinzufügen. Dadurch wird es in einem neuen Fenster geöffnet. Oder Sie könnten Ihren Kunden mit der rechten Maustaste auf den Link klicken und Ziel speichern unter.

<a href="javascript:void(0);" 
onclick="document.execCommand('SaveAs',true,'file.html');" 
>Save this page</a> 

Dieses wenn von http://www.jtricks.com/bits/content_disposition.html:

0

Sie können mit Hilfe des DOM Methode document.execCommand() dies in IE tun. Wahrscheinlich müssen Sie die browserübergreifende Kompatibilität untersuchen.

Es gibt auch Informationen in dieser Frage, die für die Arbeit mit Nicht-IE-Browser von Interesse sein könnte: Cross-browser Save As .txt

3

versuchen Content-Disposition: attachment Eigenschaft in Ihrem Code Beispiel meines Code:

response.setHeader("Content-Disposition: attachment", "filename=\"" + filePath + "\""); 
Verwandte Themen