Ich habe einige große PDF-Kataloge auf meiner Website und muss diese als Download verknüpfen. Als ich gegoogelt habe, habe ich so etwas unten notiert gefunden. Es sollte das Popup " Speichern unter ... " beim Klicken auf den Link öffnen ...
<head>
<meta name="content-disposition" content="inline; filename=filename.pdf">
...
Aber es funktioniert nicht: / Wenn ich wie unten auf eine Datei verweise, verlinkt es nur auf eine Datei und versucht, die Datei zu öffnen.
<a href="filename.pdf" title="Filie Name">File name</a>
UPDATE (gemäß den Antworten unten):
Wie ich sehe, gibt es dafür keine 100% zuverlässige Cross-Browser-Lösung. Der wahrscheinlich beste Weg ist, einen der unten aufgeführten Webdienste zu verwenden und einen Download-Link anzugeben ...
Antworten:
Von einer Antwort auf Erzwingen, dass ein Browser die Datei wie nach dem Klicken auf den Link speichert :
quelle
download
Attribut auf Chrome, Firefox und Opera beschränkt. Selbst neuere Versionen von IE und Safari unterstützen dies nicht. Für zukünftige Unterstützung: überprüfen Sie caniuse.com/#feat=download !Es funktioniert für mich in Firefox und Chrome.
quelle
target="_blank"
kann jedoch dazu führen, dass es für nicht unterstützende Browser etwas benutzerfreundlicher ist (PDFs werden dann in einem neuen Fenster / Tab geöffnet, anstatt die aktuelle Seite zu überschreiben).target="_blank"
war notwendig, dadownload
nur der Download nicht richtig ausgelöst werden konnte (Chrome)download
Attribut eine Zeichenfolge angeben, wird diese als Dateiname verwendet. Ich benutze es die ganze Zeit in Userscripts.Meta-Tags sind kein zuverlässiger Weg, um dieses Ergebnis zu erzielen. Im Allgemeinen sollten Sie dies nicht einmal tun - es sollte dem Benutzer / Benutzeragenten überlassen bleiben, zu entscheiden, was mit den von Ihnen bereitgestellten Inhalten geschehen soll. Der Benutzer kann seinen Browser jederzeit zwingen, die Datei herunterzuladen, wenn er dies wünscht.
Wenn Sie den Browser dennoch zum Herunterladen der Datei zwingen möchten, ändern Sie die HTTP-Header direkt. Hier ist ein PHP-Codebeispiel:
Beachten Sie, dass dies nur eine Erweiterung des HTTP-Protokolls ist. Einige Browser ignorieren es möglicherweise trotzdem.
quelle
ob_end_flush()
hat auch nicht geholfen.Ich hatte das gleiche Problem und fand eine Lösung, die bisher großartig funktioniert hat. Sie fügen den folgenden Code in Ihre
.htaccess
Datei ein:Es kam von Force a File to Download, anstatt im Browser angezeigt zu werden .
quelle
<FilesMatch "\.(pdf|xlsx?|docx?)$">
Ich habe eine sehr einfache Lösung für Firefox gefunden (funktioniert nur mit einem Verwandten und nicht mit einem direkten href): add
type="application/octet-stream"
:quelle
Versuchen Sie, diese Zeile zu Ihrer .htaccess-Datei hinzuzufügen.
Ich hoffe, es wird funktionieren, da es browserunabhängig ist.
quelle
Im Allgemeinen geschieht dies, weil einige Browsereinstellungen oder Plug-Ins PDF direkt im selben Fenster wie eine einfache Webseite öffnen.
Folgendes könnte Ihnen helfen. Ich habe es vor ein paar Jahren in PHP gemacht. Aber momentan arbeite ich nicht an dieser Plattform.
Speichern Sie die oben genannten als download.php .
Speichern Sie dieses kleine Snippet als PHP-Datei irgendwo auf Ihrem Server, und Sie können es verwenden, um eine Datei im Browser herunterzuladen, anstatt sie direkt anzuzeigen. Wenn Sie andere Dateien als PDF bereitstellen möchten, entfernen oder bearbeiten Sie Zeile 5.
Sie können es so verwenden:
Fügen Sie Ihrer HTML-Datei den folgenden Link hinzu.
Referenz von: Dieser Blog
quelle
download.php?file=database_password_file.php
beispielsweise.Fügen Sie einfach den folgenden Code in Ihre
.htaccess
Datei ein:Oder Sie können auch einen Trick mit JavaScript ausführen
quelle
Ich habe das gerade benutzt, aber ich weiß nicht, ob es in allen Browsern funktioniert.
Es funktioniert in Firefox:
quelle
Ein wirklich einfache Möglichkeit, dies zu erreichen, ohne externe Download-Sites zu verwenden oder Header usw. zu ändern, besteht darin, einfach eine ZIP-Datei mit der darin enthaltenen PDF-Datei zu erstellen und direkt mit der ZIP-Datei zu verknüpfen. Dies löst IMMER das Dialogfeld Speichern / Öffnen aus, und es ist für Benutzer immer noch einfach, auf die PDF-Fenster zu doppelklicken, mit denen das mit .zip verknüpfte Programm gestartet wird.
Übrigens, ich habe auch nach einer Antwort gesucht, da die meisten in den Browser eingebetteten PDF-Plugins sooo lange brauchen, um etwas anzuzeigen (und den Browser oft hängen lassen, während das PDF geladen wird).
quelle
Eine serverseitige Lösung ist kompatibler, bis das Attribut "Download" in allen Browsern implementiert ist.
Ein Python-Beispiel könnte ein benutzerdefinierter HTTP-Anforderungshandler für einen Dateispeicher sein. Die Links, die auf den Dateispeicher verweisen, werden wie folgt generiert:
Hier ist der Code:
quelle
Eine sehr einfache Möglichkeit, dies zu tun, wenn Sie den Download für einen einzelnen Link auf Ihrer Seite erzwingen müssen, ist die Verwendung des HTML5-Download-Attributs im href-Link.
Siehe: http://davidwalsh.name/download-attribute
Damit können Sie die Datei umbenennen, die der Benutzer herunterladen wird, und gleichzeitig den Download erzwingen.
Es gab eine Debatte darüber, ob dies eine gute Praxis ist oder nicht, aber in meinem Fall habe ich einen eingebetteten Viewer für eine PDF-Datei und der Viewer bietet keinen Download-Link an, daher muss ich einen separat bereitstellen. Hier möchte ich sicherstellen, dass der Benutzer die PDF-Datei nicht im Webbrowser öffnet, was verwirrend wäre.
Öffnen Sie dazu nicht unbedingt den Dialog zum Speichern unter, sondern laden Sie den Link direkt zum voreingestellten Download-Ziel herunter. Und natürlich ist es wahrscheinlich eine schlechte Idee, wenn Sie eine Site für eine andere Person erstellen und diese manuell Attribute in ihre Links schreiben müssen. Wenn es jedoch eine Möglichkeit gibt, das Attribut in die Links zu integrieren, kann dies eine einfache Lösung sein.
quelle
Dies ist ein alter Beitrag, aber hier ist der meine Lösung in JavaScript, was die Verwendung der jQuery-Bibliothek betrifft.
Sie müssen nur die Klasse
force-download
in Ihrem<a>
Tag verwenden und erzwingen den automatischen Download. Sie können es auch dem übergeordnetendiv
Element hinzufügen und alle darin enthaltenen Links übernehmen.Beispiel:
Dies ist ideal für WordPress und alle anderen Systeme oder benutzerdefinierten Websites.
quelle
Nach dem Dateinamen im HTML-Code füge ich hinzu
?forcedownload=1
Dies war für mich die einfachste Möglichkeit, ein Dialogfeld zum Speichern oder Herunterladen auszulösen.
quelle
Wenn Sie ein Plugin im Browser haben, das weiß, wie man eine PDF-Datei öffnet, wird es direkt geöffnet. Wie bei Bildern und HTML-Inhalten.
Der alternative Ansatz besteht also nicht darin, Ihren MIME-Typ in der Antwort zu senden. Auf diese Weise wird der Browser nie wissen, welches Plugin es öffnen soll. Daher erhalten Sie ein Dialogfeld zum Speichern / Öffnen .
quelle
Ich hatte gerade ein sehr ähnliches Problem mit dem zusätzlichen Problem, dass ich Download-Links zu Dateien in einer ZIP-Datei erstellen musste.
Ich habe zuerst versucht, eine temporäre Datei zu erstellen, dann einen Link zur temporären Datei bereitgestellt, aber ich habe festgestellt, dass einige Browser nur den Inhalt (eine CSV-Excel-Datei) anzeigen, anstatt das Herunterladen anzubieten. Schließlich fand ich die Lösung mithilfe eines Servlets. Es funktioniert sowohl mit Tomcat als auch mit GlassFish, und ich habe es mit Internet Explorer 10 und Chrome versucht.
Das Servlet verwendet als Eingabe einen vollständigen Pfadnamen zur ZIP-Datei und den Namen der Datei in der Zip-Datei, die heruntergeladen werden soll.
In meiner JSP-Datei befindet sich eine Tabelle, in der alle Dateien in der Zip-Datei mit folgenden Links angezeigt werden:
onclick='download?zip=<%=zip%>&csv=<%=csv%>'
Der Servlet-Code befindet sich in download.java:
Zum Kompilieren unter Tomcat muss der Klassenpfad tomcat \ lib \ servlet-api.jar oder unter GlassFish: glassfish \ lib \ j2ee.jar enthalten
Aber einer von beiden wird an beiden arbeiten. Sie müssen auch Ihr Servlet einstellen
web.xml
.quelle
Hinzufügen eines Antwortheaders Inhaltsdisposition: Anhang; gefolgt vom Dateinamen. Entfernen Sie die Meta Content-Disposition; Inline; Dadurch wird das Dokument im selben Fenster geöffnet
In Java ist es gesetzt als
quelle
Bei großen PDF-Dateien hängt der Browser. In Mozilla das Menü Extras → Optionen → Anwendungen und dann neben dem Inhaltstyp Adobe Acrobat-Dokument. Wählen Sie in der Dropdown-Liste Aktion die Option Immer fragen aus .
Das hat bei mir nicht funktioniert, also hat es funktioniert:
Menü-Tools * → Add-Ons → Adobe Acrobat (Adobe PDF-Plugin für Firefox) → DEAKTIVIEREN. Jetzt kann ich E-Books herunterladen!
quelle