Javascript-Datei umbenennen, die auf dem download
Ich möchte in der Lage sein laden Sie eine web-Datei, aber wenn der download-dialog öffnen, wird der Dateiname umbenannt.
Ex: Datei: http://<server>/<site>/test.txt
und wenn ich auf das herunterladen der Datei-download-dialog öffnen Sie mit dem Datei-name: test001.txt
.
Wie kann ich erreichen, dass?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Als InviS schlägt, gibt es heute eine
download
- Attribut auf links.Beispiel:
<a>
Inhalt (wie "klicken Sie zum download"), aber nicht den Wert innerhalbdownload="value"
onclick
handler, aber kann es EinschränkungenDieser Effekt wird erreicht durch senden einer zusätzlichen header. Sie können PHP verwenden, zum Beispiel, dies zu erreichen:
URLs umgeschrieben werden kann mit
.htaccess
, (intern) weiterleiten des request an eine PHP-Datei. Ich zeige ein einfaches hartcodierte Beispiel, wie der header können gesetzt werden:Verwenden
download
Attribut des Links. Aber es funktioniert nur im Chrome-browser 🙂Können Sie nicht tun, dass in Javascript. Die "Speichern"-dialog wird eröffnet durch die browser und Sie können nicht darauf zugreifen, die durch JS, es ist ein standard-dialog aus dem Betriebssystem.
Dein server muss die Datei mit dem gewünschten Namen, bevor der Benutzer klickt auf den download-link.
Was ist der Grund, dass Sie möchten, benennen Sie die heruntergeladene Datei überhaupt?
Wenn das, was Sie wollen, ist, um wieder eine kontinuierliche Art von Datei-Namen, müssen Sie ein Skript schreiben, das wird verfolgen, und vorsehen, dass die Datei zurück an den Benutzer. Eine Möglichkeit ist die Verwendung von plain PHP, oder etwas mehr erweitert, wenn es mehrere Dateien zu einem Zeitpunkt, möglicherweise ein cURL-Aufruf in php, so kann es erzeugen mehrere verschiedene Dateien. Ich vermute, dass ist das, was Sie suchen zu tun, aber Sie können nicht die Dateinamen dynamisch verändern, auf das speichern-Dialogfeld in diesem Sinne, kehren Sie die savename.txt mit dem Namen.
Verwendet werden können das download-Attribut in einem link-tag
<a href="http://server/site/test.txt" download="test001.txt">Download Your File</a>
Jedoch, wenn "content-disposition" - header gesetzt ist, auf die server-Antwort, er ignoriert das download-Attribut, und der Dateiname wird gesetzt, um den Dateinamen in der content-disposition-header der Antwort
Erreichen Sie dies mithilfe von axios oder andere fetch-dadurch:
Verwendung:
Anmerkung: wenn Ihre Datei zu groß ist, ist es Aussehen wird, wie es ist, nichts zu tun, bis die gesamte Datei heruntergeladen wurde, so stellen Sie sicher, dass Sie zeigen einige Nachricht oder einen Hinweis an den Benutzer, um zu lassen Sie Sie wissen, es ist etwas zu tun