2013-04-09 10 views
6

Muszę zwrócić tylko nazwę pliku z pliku wejściowego HTML.Pobierz tylko nazwę pliku z pliku wejściowego w przeglądarce Internet Explorer

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

Kod im JavaScript używając aby uzyskać nazwę pliku to:

document.getElementById("whatever").value; 

w Firefoksie daje tylko nazwę pliku, który jest to, co chcę, ale w IE uzyskać pełną ścieżkę .

Myślę, że manipulacja łańcuchami jest jedynym sposobem na uzyskanie nazwy.

Jaki byłby najprostszy/najkrótszy sposób, aby uzyskać tylko nazwę (rozszerzenie też) w JavaScript? Dzięki.

Odpowiedz

17

Można spróbować to

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

Doskonały, myślę, że nie może być krótszy. – user937450

+2

Używam 'path.match (/ [^ \/\\] * $ /) [0]'. 1 - Wynik z meczu nie jest "ciągiem" 2 - Brak błędów, jeśli "ścieżka ==" "; –

2

Mam nadzieję, że to zadziała.

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

Oto skrzypce w tym Fiddle

+0

Ill spróbować tu i wam wynik – user937450

+0

Tak to działa, ale tylko dla tych barów „\” – user937450

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

To daje wszystko po ostatniej /, ale jest również kompatybilny z brakiem / s. W przypadku trzeba także do czynienia z \ jako piękny separatora ścieżki, zawsze można użyć tego pierwszego:

path.replace(/\\/g, "/") 
Powiązane problemy