2013-04-09 13 views
6

Sadece bir HTML giriş dosyasından dosya adını döndürmem gerekiyor. Firefox'taSadece Internet Explorer'da dosya girişinden dosya adı alın

document.getElementById("whatever").value; 

bunun bana göre budur yalnızca dosya adını verir, ama IE'de ben tam yol almak: dosyanın adını almak için kullanarak

<input type="file" id="whatever" /> 

JavaScript kodu im

olduğunu .

Bence bu dize manipülasyonu ismin tek yolu.

JavaScript'te yalnızca adı (uzantıyı da) almanın en kolay/en kısa yolu ne olurdu? Teşekkürler.

cevap

17

için keman olduğunu bu

var path = document.getElementById("whatever").value; 
var fileName = path.match(/[^\/\\]+$/); 
console.log(fileName); 
+0

Mükemmel, bence bundan daha kısa olamaz. – user937450

+2

'path.match (/ [^ \/\\] * $ /) [0]' kullanıyorum. 1 - Eşleşmeden elde edilen sonuç bir "dize" değil 2 - 'path ==' ''; –

2

Umarım bu işe yarar. İşte

var fullFileName = document.getElementById("whatever").value; 
var fileName = fullFileName.substr(fullFileName.lastIndexOf("\\")+1, fullFileName.length); 

Sen deneyebilirsiniz Fiddle

+0

Hasta ancak sadece bu çubukları için buraya denemek ve size – user937450

+0

Evet çalışır sonucunu anlatmak "\" – user937450

0
var path = document.getElementById("whatever").value; 
var filename = path.substring(path.lastIndexOf("/") + 1); 

Bu son / sonra size her şeyi vermek değil, aynı zamanda eksikliği ile uyumludur olacak / s. Eğer aynı zamanda güzel yol ayırıcı olarak \ ile uğraşmak zorunda, her zaman bu ilk kullanabilirsiniz:

path.replace(/\\/g, "/")