Gibt es eine Möglichkeit zum festlegen eines vorgeschlagenen Dateinamen bei Verwendung von data: - URI?
Beispielsweise, wenn Sie dem link Folgen:
data:application/octet-stream;base64,SGVsbG8=
Browser wird Sie auffordern, eine Datei herunterzuladen, die aus den Daten als base64 in der hyperlink selbst. Gibt es eine Möglichkeit, vor einem default-Namen in das markup? Wenn nicht, ist es eine JavaScript-Lösung?
vielleicht nicht in Bezug zu diesem Thema, aber ich schlage vor, mit blob ' s & URL.createObjectURL wenn dies nicht ein server oder eine veraltete browser-Hindernis
Einige Browser unterstützen den mediatype der optionale parameter "name":
Ich hatte das Problem mit Firefox pdf.js die dazu neigt, hängen in einigen Fällen, wenn es nicht extrahiert einen Dateinamen aus dem data-uri. siehe stackoverflow.com/questions/45585921/...
Welche Browser unterstützen die "name" - parameter? Können Sie mir einige Referenz-Dokumentation? (mein google-fu hat mich im Stich gelassen).
Zumindest bei Firefox, dass Zeit. Sie schauen, wie es ist nicht mehr der Fall. Hängt es mit dem MIME-Content-Type (!= "Content-Disposition") "name" - parameter (nicht im RFC?)
Einige Browser unterstützen den mediatype der optionale parameter "name":
data:application/pdf;name=document.pdf;base64,BASE64_DATA_ENCODED
Ich hatte das Problem mit Firefox pdf.js die dazu neigt, hängen in einigen Fällen, wenn es nicht extrahiert einen Dateinamen aus dem data-uri. siehe stackoverflow.com/questions/45585921/...
Welche Browser unterstützen die "name" - parameter? Können Sie mir einige Referenz-Dokumentation? (mein google-fu hat mich im Stich gelassen).
Zumindest bei Firefox, dass Zeit. Sie schauen, wie es ist nicht mehr der Fall. Hängt es mit dem MIME-Content-Type (!= "Content-Disposition") "name" - parameter (nicht im RFC?)
InformationsquelleAutor | 2008-11-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden Sie die
download
Attribut:Live-Beispiel auf html5-demos.appspot.com/....
Funktioniert derzeit auf Chrome -, Firefox -, Edge -, Oper-und desktop-Safari, aber nicht iOS-Safari oder IE11.
aber Sie kann es nicht mit
window.location.replace
. wenn Sie z.B. möchten, erstellen Sie eine data: - uri-oder man erzeugt durchwindow.URL.createObjectURL
, und download als Datei haben, müssen Sie zum erstellen einer <a>, und klicken Sie auf: jsfiddle.net/flyingsheep/wpQtH (Nein,$(...).click()
funktioniert nicht)Nur wenn sich alle browser wie Chrome... [seufz]
href="data:text/plain", "Test" download="test.txt">')[0].klicken Sie auf() scheint gut zu funktionieren hier (Chrome 23) (Hinweis: ich verwendet die native
click
- Methode, nicht die jQuery). Demo: jsfiddle.net/2zsRWSie können finden Sie unter browser-Kompatibilität ist hier caniuse.com/#search=download
InformationsquelleAutor Dan Fabulich
Chrome macht dies sehr einfach in diesen Tagen:
Es funktioniert jetzt, aber es war nicht immer so einfach. Viele dieser Antworten sind von vor Jahren. Und Sie arbeiten auch für andere Browser.
Siehe http://caniuse.com/#feat=download für eine vollständige Liste der browser-Kompatibilität.
Trotz der info, die Seite funktioniert nicht in meinem firefox-44. Schön funktioniert in Chrome. 48
Hi @Holf gibt es eine Möglichkeit auch zum hinzufügen von Dateityp oder-Erweiterung oder Ihre ebenso einfache wie spceficy es da mit dem Namen?
InformationsquelleAutor Holf
Laut RFC 2397, Nein, gibt es nicht.
Noch scheint es jede Attribut der<a>
element, das Sie verwenden können, entweder.Aber HTML5 hat in der Folge führte die
download
- Attribut auf die<a>
element, obwohl zu der Zeit des Schreibens unterstützt ist nicht universell (nicht MSIE, Unterstützung, zum Beispiel)interessant - danke für den link!
es war nicht vor 3 Jahren, als ich schrieb, Kommentar
nach caniuse.com/#feat=download es ist noch nicht
Es ist...... sicher sind wir nicht mit dem IE.
InformationsquelleAutor Alnitak
Ist, habe ich mich ein bisschen in firefox Quellen in netwerk/protocol/data/nsDataHandler.cpp
Daten-handler werden nur geänderte Inhalte/Typ und Zeichensatz, und schaut, ob es ";base64,"
in der Zeichenfolge
rfc specifices kein mit dem Namen und mindestens firefox-handles nicht mit dem Namen für es,
der code generiert einen zufälligen Namen plus ".Teil"
Habe ich auch überprüft firefox-log -
interessante Dateien, wenn Sie wollen, schauen Sie sich die mozilla Quellen:
Ich denke, Sie können aufhören zu suchen, eine Lösung für jetzt, weil ich vermute, es ist keiner 🙂
wie bemerkt, in diesem thread html5 hat
download
- Attribut funktioniert es auch auf firefox 20 http://www.whatwg.org/specs/web-apps/current-work/multipage/links.html#attr-hyperlink-downloadInformationsquelleAutor sherpya
Folgende Javascript-snippet funktioniert in Chrome, indem mit dem neuen 'download' - Attribut des links und simuliert einen Klick.
Und das folgende Beispiel zeigt es:
InformationsquelleAutor owencm
Nicht.
Der ganze Zweck ist, dass es ein Datenstrom, nicht eine Datei. Sollte die Datenquelle keine Kenntnis von der Benutzer-agent-handling als Datei... und es funktioniert nicht.
data:
ist fudge ein block von interne - Daten in URL-format die zimmerreserviereung, ohne das Lesen aus einem Protokoll-basierte Quelle. Der link in @silex Antwort zeigt, dass die Fähigkeit zu schlagen eine bevorzugte Namen schreiben es als nützlich erachtet wird, auch wenn es noch nicht implementiert.Nützlich? Absolut. Technisch angemessen? Immer noch nicht überzeugt. 🙂
betrachten Sie den Unterschied zwischen dem laden der Daten und dem speichern - nur weil ein blob ist codiert inline in einer data: - URL, bedeutet nicht, dass es nicht haben sollte bevorzugte name für speichern auf.
Aber Ihre Linie über seine "gesamten Zweck" ist falsch.
data:
wurde speziell erfunden, um zu ermöglichen (klein) inline Inhalte angezeigt, die in einem frisiert,-zusammen-URL-format, so dass es könnte verwendet werden, durch Dinge wie image-tags ohne eine separate HTTP-Anforderung. HTML-sagt der Inhalt einerimg src
Attribut muss eine URL sein, also, was die RFC 2397 erstellt. Es gibt keine "data source".Genau. Es gibt keine Datenquelle. Es gibt keinen Kontext. Der URI ist die Daten.
InformationsquelleAutor Lightness Races in Orbit
können Sie ein download-Attribut des anchor-Elements.
Beispiel:
InformationsquelleAutor cuixiping
Schauen Sie unter diesem link:
http://lists.w3.org/Archives/Public/uri/2010Feb/0069.html
Zitat:
Gibt es auch einige Infos in den rest-Nachrichten der Diskussion.
diese Diskussion war für ein vorgeschlagen Erweiterung der Daten-URI-format - es wurde noch nicht umgesetzt.
Umgesetzt wird oder nicht, mit der derzeitigen Unterstützung für beliebige Parameter, das wäre eine große.
InformationsquelleAutor silex
Mit service-Mitarbeiter, dies endlich möglich ist, im wahrsten Sinne.
<a href, <img src
Fenster.open( url ), absolut alles, was getan werden kann, mit einer "richtigen" URL.Browser nun empfehlen myPrettyName.jpg selbst wenn der Benutzer die Datei öffnet in einem neuen tab, und versucht, es zu retten gibt. Es wird genau so, wie wenn die Datei von dem server.
Gibt es eine Möglichkeit, zu "reagieren" mit einem anderen die direkte url zu einer Datei?
InformationsquelleAutor Adria
Gibt es einen kleinen workaround-Skript auf Google Code, der bei mir funktioniert:
http://code.google.com/p/download-data-uri/
Fügt Sie ein Formular mit den Daten, übermittelt Sie und entfernt dann die form wieder. Hacky, aber es hat den job für mich. Benötigt jQuery.
Diesem thread zeigte, die Google vor den Google-Code-Seite und ich dachte, es könnte hilfreich sein, um den link hier auch.
Wie es aussieht. Wie ich schon schrieb, hacky-workaround..
Ich bin mir nicht sicher wo die Datei erstellt wird.. ist die Datei gespeichert, die in das base64-codieren? (Ich bin nicht allzu vertraut mit base64)
Die "Datei" (also Daten) generiert, die mittels Javascript. Der Kontext des Projekts (und wahrscheinlich die meisten hier) davon ausgehen, dass Sie einige Weg, um Ihre gewünschten Daten in eine JS-variable. Der Unterschied ist, dass anstelle der präsentiert es dem Benutzer über eine
data:...
URI, das Skript erstellt ein Formular eine Nachricht an den server. Und die server dann vermutlich hallt es gerade wieder als HTTP - "download" - Reaktion (d.h. mit einer entsprechenden Content-Disposition-header die Angabe des Dateinamens).InformationsquelleAutor Fabian B.
Es ist nett hackish, aber ich habe in der gleichen situation vor. Ich war dynamisch erzeugen einer text-Datei in javascript und wollte es zum download der Enkodierung mit dem data-URI.
Dies ist möglich mit
kleinemajor eingreifen des Benutzers. Erzeugen einen link<a href="data:...">right-click me and select "Save Link As..." and save as "example.txt"</a>
. Wie ich schon sagte, ist dies unelegant, aber es funktioniert, wenn Sie nicht benötigen eine professionelle Lösung.Könnte dies weniger schmerzhaft durch die Verwendung von flash zu kopieren Sie die Namen in die Zwischenablage ersten. Natürlich, wenn du dich mit Flash oder Java (jetzt mit weniger und weniger browser-Unterstützung, die ich denke?), Sie könnte wahrscheinlich finden einen anderen Weg, dies zu tun.
Lol @ "kleineren Eingriff". Bekommen die user zu tun, die ganze Sache für Sie ist nicht der "kleinere Eingriff".
Kombinieren Sie dies mit stackoverflow.com/questions/17311645/... auslösen der generierte link, und Sie benötigen keine Benutzer-intervention. Sie können die HTML5
download
- Attribut, um die Namen vorschlagen wie erwähnt von viele andere Antworten.Dies ist ein großer workaround für Safari. Mit Modernizr zu erkennen, wenn der download-Attribut wird nicht unterstützt und aktualisieren den text für den link!
InformationsquelleAutor ninjagecko
Hier ist ein jQuery-version auf der Grundlage der Holf-version und funktioniert mit Chrome und Firefox in der Erwägung, dass seine version scheint zu funktionieren nur mit Chrome. Es ist ein wenig seltsam, etwas für den Körper zu tun, aber wenn jemand eine bessere option, ich bin alle für es.
$().appendTo()
eine variable dann aufrufenvariable.click(); variable.remove()
Sie sollten diese Ausnahme mit jedem jQuery ist, weil die
[0]
von allen "jQuery" element zurückgeben sollte, den ersten DOM-Elements repräsentiert, die im wesentlichen "gelangen Sie aus der" jQuery.Sie eigentlich nicht benötigen, sollten auf hinzufügen/entfernen -- siehe Kommentare bei stackoverflow.com/a/17311705/1037948
InformationsquelleAutor kgividen
Funktioniert mit Firefox 43.0 (ältere nicht getestet):
dl.js:
dl.html
Wenn die Schaltfläche geklickt wird, bot es eine Datei namens Hallo.bin zum download. Trick ist die Verwendung Datei statt Blob.
Referenz: https://developer.mozilla.org/de/docs/Web/API/File
InformationsquelleAutor NeutronenStern
diese Antwort ist Müll
InformationsquelleAutor Sushama Pradhan
Können Sie tatsächlich erreichen dies, in Chrome und FireFox.
Versuchen Sie die folgende url, wird der download der code, der verwendet wurde.
InformationsquelleAutor Chad Scira