Por fin luego de mucho batallar hemos dado con el arreglo de este asunto que muchos usuarios de nuestro sitio tienen. Si deseas aportar algo más no dudes en dejar tu información.
Solución:
var filename = $('input[type=file]').val().split('\').pop();
o simplemente podrías hacerlo (porque siempre es C:fakepath
que se agrega por razones de seguridad):
var filename = $('input[type=file]').val().replace(/C:\fakepath\/i, '')
Solo necesita hacer el código a continuación. El primero [0] es acceder al elemento HTML y segundo [0] es acceder al primer archivo de la carga del archivo (incluí una validación en caso de que no haya ningún archivo):
var filename = $('input[type=file]')[0].files.length ? ('input[type=file]')[0].files[0].name : "";
Cromo regresa C:fakepath...
por razones de seguridad, un sitio web no debería poder obtener información sobre su computadora, como la ruta a un archivo en su computadora.
Para obtener solo la parte del nombre de archivo de un stringpuedes usar split()
…
var file = path.split('\').pop();
jsviolín.
…o una expresión regular…
var file = path.match(/\([^\]+)$/)[1];
jsviolín.
…o lastIndexOf()
…
var file = path.substr(path.lastIndexOf('\') + 1);
jsviolín.