2013-07-09 2 views
-1

Я использую пользовательскую кнопку загрузки файлов в своем веб-приложении. Я хочу, чтобы пользователь увидел, что они выбрали файл, поэтому я изменяю html div для отображения имени файла.Использование JQuery для захвата имени файла

Вот мой JQuery:

$("input[type=file]").change(function() { 
    var filename = $("input[type=file]").val(); 
    $("#share-file-name p").html(filename); 
}); 

Теперь это прекрасно работает, за исключением того, что значение входного сигнала является исключением:

C:\fakepath\photo.jpg 

Так что это то, что видит пользователь. Я просто хочу, чтобы они увидели часть «photo.jpg». Как я могу использовать свой jquery, чтобы удалить все, кроме имени файла?

Спасибо!

+0

использование регулярных выражений –

+0

использование манипуляции строк, а не jQuery. –

+0

http://www.doxdesk.com/img/updates/20091116-so-large.gif – NicoSantangelo

ответ

0

использование split("/");, а затем вы получили массив со всеми элементами, разделенных/поэтому последний элемент будет имя файла

var file = filepath.split("/"); file[file.length - 1] 
1

Вы можете просто оттяпать что-нибудь слева от крайнего правого «/»

так:

$("input[type=file]").change(function() { 
    var filename = $("input[type=file]").val(); 
    // As pointed out in the comments, this line is required to make it 
    // Windows compliant. It's important to handle paths from any OS. 
    filename = filename.replace(/^.*[\\\/]/, ''); 
    $("#share-file-name p").html(filename); 
}); 
+0

не работает на окнах, но эй, это всего лишь 90% рынка ... – dandavis

+0

@ dandavis, в каком браузере вы тестировали его, чтобы он не работал? Это стандартный JavaScript, и он должен работать на всех основных браузерах. – SamHuckaby

+0

это не JS, это символ обратного пути, который ломается ... – dandavis

2

Это должно работать:

filename = filename.replace(/^.*[\/\\]/, ""); 
1

Если у вас есть полный путь к файлу, хранящийся в переменной filename, вы можете сделать следующее, чтобы получить только имя файла:

filename.substring(filename.lastIndexOf("\")) 

Регулярные выражения или раздвоение команды являются излишеством для того, что вы пытаетесь делать.

0

Вы можете использовать это регулярное выражение:

filnameToDisplay = /([^\\]+.\w+$)/.exec(filename)[0]; 

Это позволит получить то, что вы хотите, независимо от длины FilePath или символов в имени файла, если они не используют странное расширение, я не знаю, о!

Смежные вопросы