link - meta html
¿Cómo establecer el nombre del archivo descargado del navegador? (5)
¡es muy fácil usando el atributo de download
HTML5!
aquí está mi demo de codepen .
https://codepen.io/xgqfrms/full/GyEGzG/
mi atajo de pantalla.
agregar demostración
gif
.
Estoy escribiendo una aplicación web que, entre otras cosas, permite a los usuarios subir archivos a mi servidor. Para evitar conflictos de nombres y organizar los archivos, los cambio de nombre una vez que se colocan en mi servidor. Al hacer un seguimiento del nombre del archivo original, puedo comunicarme con el propietario del archivo sin que sepan que cambié el nombre del archivo en el back-end. Es decir, hasta que se descargan, descargue el archivo. En ese caso, se les solicita que descarguen un archivo con un nombre desconocido.
Mi pregunta es, ¿hay alguna manera de especificar el nombre de un archivo para descargar utilizando solo HTML? Entonces un usuario carga un archivo llamado ''abc.txt'' y lo cambio a ''xyz.txt'', pero cuando lo descargan quiero que el navegador guarde el archivo como ''abc.txt'' de manera predeterminada. Si esto no es posible solo con HTML, ¿hay alguna forma de hacerlo?
Bueno, la respuesta de @ Palantir es, para mí, ¡ la forma más correcta !
Si planeas usar eso con varios archivos, entonces te sugiero que uses (o hagas uno) PHP Download Manager.
PERO , si desea hacer eso en uno o dos archivos, le sugeriré la opción mod_rewrite :
Tienes que crear o editar tu archivo .htaccess en la carpeta htdocs y agregar esto:
RewriteEngine on
RewriteRule ^abc/.txt$ xyz.txt
Con este código, los usuarios descargarán datos xyz.txt con el nombre abc.txt
NOTA: Verifique si ya tiene el " RewriteEngine on " en su archivo, si es así, agregue solo el segundo para cada archivo que desea redireccionar.
Buena suerte ;) (Lo siento por mi inglés)
Cuando hacen clic en un botón para descargar el archivo, puede agregar la download
atributo HTML5 donde puede establecer el nombre de archivo predeterminado.
Eso es lo que hice, cuando creé un archivo xlsx y el navegador quiere guardarlo como un archivo zip.
<a href="path/to/file" download="renamed.txt">Download</a>
<a href="downloads/export.xlsx" download="Data-Export.xlsx">Download Export</a>
Esto tendrá que hacerse en el lado del servidor. Deberá tener el nombre del archivo antiguo en una base de datos en alguna parte, y luego podría moverlo a una carpeta temporal con el nombre correcto y enviar ese archivo al usuario. TBQH: creo que debería considerar evitar los conflictos de nombres con los subdirectorios y almacenar la ruta de cada archivo en su base de datos en lugar del nombre / nombre nuevo.
No se puede encontrar una forma en HTML. Creo que necesitarás una secuencia de comandos del lado del servidor que generará un encabezado de disposición de contenido. En php esto se hace así:
header(''Content-Disposition: attachment; filename="downloaded.pdf"'');
si desea proporcionar un nombre de archivo predeterminado, pero no descarga automática, esto parece funcionar.
header(''Content-Disposition: filename="filetodownload.jpg"'');
De hecho, es el servidor el que está sirviendo directamente a sus archivos, por lo que no tiene forma de interactuar con él desde HTML, ya que HTML no está involucrado en absoluto.