2011-09-15 20 views
9

Desidero poter scaricare un file Web, ma quando si apre la finestra di download, il nome file viene rinominato.Javascript rinominare il file in download

Es: File: http://<server>/<site>/test.txt

e quando clicco per scaricare il file, finestra di dialogo scaricare aperto con il nome del file: test001.txt.

Come posso farlo?

risposta

0

Non è possibile farlo in Javascript. La finestra di dialogo "Salva in" è aperta dal browser e non è possibile accedervi tramite JS, è una finestra di dialogo standard del sistema operativo.

Il server deve fornire il file con il nome desiderato prima che l'utente faccia clic sul collegamento per il download.

Qual è il motivo per cui si desidera rinominare comunque il file scaricato?

+0

I avere i file in una libreria Sharepoint e sto cercando di creare un'azione personalizzata per scaricare i file e aggiungere il documento versione nel nome del file. Per fare questa azione personalizzata posso usare solo il codice javascript. Qualche consiglio? – bruno2007

2

Questo effetto si ottiene inviando un'intestazione aggiuntiva. È possibile utilizzare PHP, ad esempio, per ottenere ciò:

Gli URL possono essere riscritti utilizzando .htaccess, (internamente) reindirizzando la richiesta in un file PHP. Vi mostrerò un semplice esempio hard-coded, di come l'intestazione può essere impostata:

<?php 
    header('Content-type: text/plain'); 
    header('Content-Disposition: attachment; filename="test001.txt"'); 
    readfile('files/test.txt'); 
    //assuming that the files are stored in a directory, not in a database 
?> 
+0

ma questo non comporterà la natura dinamica che sta cercando. La mia ipotesi ovviamente è – Truesky

+0

Ho mostrato come è possibile impostare le intestazioni. Se ha le competenze per programmare in PHP, può modificare il codice per raggiungere il suo obiettivo. –

0

Se quello che vuoi è quello di restituire un tipo continuo di nome di file, è necessario scrivere uno script che non mancherà di tenere traccia di quello e fornire quel file indietro all'utente. Un modo è usare semplicemente PHP, o qualcosa di più avanzato se si tratta di diversi file alla volta, probabilmente una chiamata cURL in php in modo che possa generare diversi file diversi. Sto indovinando che è ciò che stai cercando di fare, ma non puoi avere il nome del file modificato dinamicamente nella casella di salvataggio in quel senso, si restituisce il nome file savename.txt.

2

Utilizzare l'attributo download del collegamento. Ma funziona solo nel browser Chrome :)

+2

Ora anche in FF :) –

+0

http://caniuse.com/#feat=download Ora è supportato nel browser Opera e Android. –

13

Come suggerisce InviS, ora c'è un attributo download sui collegamenti.

Esempio:

<a href="http://server/site/test.txt" download="test001.txt">Download Your File</a> 
+0

Lo uso in combinazione con target = "_ blank" per altri browser. – Darren

+1

http://caniuse.com/#feat=download Ora è supportato nel browser Opera e Android. –

+0

Grazie, aggiornato la mia risposta –

Problemi correlati