Gibt es eine Möglichkeit zu ‚simulieren‘ Rechtsklick save-als Befehl oder Kraft Herunterladen der Datei im Browser mit JavaScript?

StackOverflow https://stackoverflow.com/questions/3711526

Frage

Ich habe diese Situation, wo wir auf einem globalen CDN Mediendateien gespeichert haben. Unsere Web-App ist auf seinen eigenen Server gehostet und dann, wenn die Medien-Assets benötigt werden sie von der CDN-URL aufgerufen werden. Vor kurzem hatten wir eine Seite, wo der Benutzer Dateianhänge herunterladen kann, aber einige der Dateitypen wurden im Browser zu öffnen, anstatt das Herunterladen (zB MP3). Der einzige Weg, um dies manuell die HTTP-Antwort geben Sie die Datei anhängen, aber der einzige Weg, ich war erzielen konnte die Datei von CDN zu meinem Server herunterzuladen und dann dem Benutzer rückzukoppeln, die Niederlagen der Zweck es mit auf dem globalen CDN. Stattdessen frage ich mich, ob es eine Client-Seite Lösung hierfür ist?

EDIT: Gerade diese irgendwo gefunden, obwohl ich bin mir nicht sicher, ob es richtig in allen Browsern funktionieren

<body>
<script>
function downloadme(x){
myTempWindow = window.open(x,'','left=10000,screenX=10000');
myTempWindow.document.execCommand('SaveAs','null','download.pdf');
myTempWindow.close();
}
</script>

<a href=javascript:downloadme('/test.pdf');>Download this pdf</a>
</body>

RE-EDIT: Na ja, so viel für diese Idee -> Does execCommand SaveAs Arbeit in Firefox?

War es hilfreich?

Lösung

Gibt es in Ihrem CDN können Sie die HTTP-Header angeben? Amazon Cloudfront tut, zum Beispiel.

Andere Tipps

fand ich eine einfache Lösung für dieses Problem, die für mich gearbeitet. Fügen Sie eine URL-Parameter an den Dateinamen. Dadurch wird der Browser Trick umgangen es in Dateizuordnungen aufgebaut wird. Für examaple, statt http://mydomain.com/file.pdf , setzen Sie Ihren Link auf Client-Seite Punkt auf http://mydomain.com/file.pdf ? (Hinzugefügt ein Fragezeichen)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top