Vea mi código a continuación. Funciona bien, pero al descargar un archivo ingresando la clave requerida, el nombre del archivo cambió y se está descargando con el nombre de dominio completo + directorio + nombre de archivo. Pero solo quiero el nombre del archivo.
Código:
//Esta es la parte HTML.
<center> <input class="keyBox" style="padding : 10px; padding-left:15px; padding-right:15px" type="text" width="100px" placeholder="Enter your download key"> <br><br> <div class="text-center"> <button id="down" class="btn btn-style btn-primary">Download</button> </div> </center>// Este es el Script que estoy usando.
<script> const files = [{ key: 12345, path: 'Marouf.png' }, { key: 12477, path: 'Ismat.png' }] const globalPath = 'https://abcd.com/directory/certificates/' const inp = document.querySelector('.keyBox') const btn = document.querySelector('#down') btn.addEventListener('click', downloadURI) function downloadURI() { if (inp.value) { let uri = files.filter(f => f.key === Number(inp.value)) if (uri.length) { let link = document.createElement("a"); const fullPath = globalPath + uri[0].path link.download = fullPath; link.href = fullPath; link.click(); } else { alert("Incorrect download key! Try again...") } } } </script>Hay varias formas de resolver su problema. La solución más simple es establecer el atributo de download sin valor
link.download = '';Esto utilizará el segmento final de la URL como nombre de archivo.
downloadHace que el navegador trate la URL vinculada como una descarga. Se puede usar con o sin un valor:
Sin un valor, el navegador sugerirá un nombre de archivo/extensión, generado a partir de varias fuentes:
- El encabezado HTTP de disposición de contenido
- El segmento final en la ruta de la URL
- El tipo de medio (desde el encabezado de Tipo de contenido, el inicio de un dato: URL o Blob.type para un blob: URL)
Definir un valor lo sugiere como el nombre del archivo. Los caracteres / y \ se convierten en guiones bajos (_). Los sistemas de archivos pueden prohibir otros caracteres en los nombres de archivo, por lo que los navegadores ajustarán el nombre sugerido si es necesario.