2012-04-06 91 views
17

Si un usuario hace clic en un enlace para descargar comoCambiar nombre de descarga en javascript

<a href="downloadable.txt">Download</a> 

¿Existe un lado del cliente (HTML o Javascript) forma de cambiar el nombre del archivo antes de que el 'Guardar como ¿Diálogo?

+0

posible duplicado de [Cambiar el nombre de una descarga html] (http://stackoverflow.com/questions/10037273/change-the-name-of-an-html-download) –

Respuesta

5

No, no puede cambiar esto desde el lado del cliente (HTML o javascript). Debes cambiarlo desde el servidor. Una forma es utilizar un script del lado del servidor que permitirá establecer el encabezado de respuesta HTTP Content-Disposition:

Content-Disposition: attachment; filename=somecustomname.txt 
+0

Aunque no del lado del cliente, este es el efecto que quería. Gracias. – Intra

52

HTML5 proporciona el atributo a[download] que le permite cambiar el nombre de un archivo. Este ejemplo descargará link.txt y lo cambiará de nombre something.txt.

​<a download="something.txt" href="link.txt">asdf</a>​​​​​​​​​​​​​​​​​​​​​​​​​​​ 

Tenga en cuenta que esto solo funciona en URLs del mismo origen (es decir, no en diferentes dominios).

+0

No solo Chrome, sino que también funciona en mi Firefox 28.0. Puede ver la lista de compatibilidad aquí: http://caniuse.com/download – Bonswouar

+0

Funciona en Firefox a partir de la versión 20.0, pero solo para archivos del mismo dominio (consulte https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a # attr-download) – deterb

+0

http://caniuse.com/#feat=download Ahora es compatible con Opera y el navegador android. –

2

Puede utilizar guión escrito por Filesaver.js eligrey (Im usando AngularJS en el ejemplo aquí) Puede lograr el mismo en javascript clásica usando el objeto XMLHttpRequest

//In your html code , add these : -> 
<script src="https://rawgit.com/eligrey/FileSaver.js/master/FileSaver.js" type="text/javascript"></script> 
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> 
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.7/angular.min.js"></script> 
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.7/angular-animate.js"></script> 
//In your Javascript:- 

$http({ 
     url: "url where the file is located", 
     method: "GET", 
     responseType: "blob" 
    }).then(function (response) { 

saveAs(response.data,"newfilename.extension"); 

}) 
Cuestiones relacionadas