Esta respuesta sólo funciona en el entorno del navegador. No es adecuado para el nodo.
function getFilename(url) {
const filename = decodeURIComponent(new URL(url).pathname.split('/').pop());
if (!filename) return 'index.html'; // some default filename
return filename;
}
function filenameWithoutExtension(filename) {
return filename.replace(/^(.+?)(?:\.[^.]*)?$/, '$1');
}
Para los navegadores no soportan new URL
, es posible que desee:
var a = document.createElement('a');
a.href = url;
var pathname = a.pathname;
Éstos son dos funciones:
- primero uno y llévese el nombre de archivo del url
- segundo obtener un nombre de archivo sin extensión de una nombre de archivo completo
Para analizar URL, un objeto nuevo URL
debe ser la mejor opción. También tenga en cuenta que la URL no siempre contiene un nombre de archivo.
Aviso: Esta función intenta resolver el nombre del archivo desde una URL. Pero no garantizan que el nombre del archivo es válido y adecuado para su uso:
- Algunos OS no ciertos caracteres en nombre de archivo (por ejemplo,
:
en las ventanas, \0
en la mayor parte del sistema operativo, ...);
- Algunos de nombre de archivo pueden reservada por el sistema operativo (por ejemplo, en ventanas CON);
- Algunos nombre de archivo puede hacer que el usuario infeliz para manejarlo (por ejemploun archivo llamado "--help" en Linux)
Posible duplicado de [¿Cómo obtener el nombre de archivo de una ruta completa usando JavaScript?] (https://stackoverflow.com/questions/423376/how-to -get-the-file-name-from-a-full-path-using-javascript) – Liam