Используйте jQuery, чтобы получить вход файла с выбранным именем файла без пути

Я использовал это:

$('input[type=file]').val()

чтобы получить имя файла, но он вернул полный путь, как в "C:\fakepath\filename.doc". Часть "fakepath" была на самом деле там - не уверен, что она должна быть, но это мой первый опыт работы с именем файла загрузки файлов.

Как я могу получить имя файла (filename.doc)?

Ответ 1

var filename = $('input[type=file]').val().split('\\').pop();

или вы можете просто сделать (потому что он всегда C:\fakepath, который добавляется по соображениям безопасности):

var filename = $('input[type=file]').val().replace(/C:\\fakepath\\/i, '')

Ответ 2

Вам просто нужно сделать код ниже. Первый [0] - это доступ к элементу HTML, а второй [0] - к первому файлу загрузки файла (я включил проверку в случае отсутствия файла):

    var filename = $('input[type=file]')[0].files.length ? ('input[type=file]')[0].files[0].name : "";

Ответ 3

Chrome возвращает C:\fakepath\... по соображениям безопасности - веб-сайт не должен получать информацию о вашем компьютере, такую ​​как путь к файлу на вашем компьютере.

Чтобы получить только часть имени файла в строке, вы можете использовать split()...

var file = path.split('\\').pop();

jsFiddle.

... или регулярное выражение...

var file = path.match(/\\([^\\]+)$/)[1];

jsFiddle.

... или lastIndexOf()...

var file = path.substr(path.lastIndexOf('\\') + 1);

jsFiddle.

Ответ 4

Получить работу со всеми ОС

var filename = $('input[type=file]').val().replace(/.*(\/|\\)/, '');

Пример

C:\fakepath\filename.doc 
/var/fakepath/filename.doc

Оба возвращают

filename.doc
filename.doc

Ответ 5

Вот как я это делаю, он работает очень хорошо.

В вашем HTML:

<input type="file" name="Att_AttributeID" onchange="fileSelect(event)" class="inputField" />

Затем в вашем js файле создайте простую функцию:

function fileSelect(id, e){
    console.log(e.target.files[0].name);
}

Если вы делаете несколько файлов, вы также можете получить список, перейдя через это:

e.target.files[0].name

Ответ 6

может быть некоторое дополнение для исключения fakepath:

var fileName = $('input[type=file]').val();
var clean=fileName.split('\\').pop(); // clean from C:\fakepath OR C:\fake_path 
alert('clean file name : '+ fileName);

Ответ 7

Как насчет чего-то подобного?

var pathArray = $('input[type=file]').val().split('\\');
alert(pathArray[pathArray.length - 1]);

Ответ 8

Должен ли быть jquery? Или вы можете просто использовать встроенный JavaScript yourpath.split("\\") для разделения строки на массив?

Ответ 9

Получить первый файл из элемента управления, а затем получить имя файла, он будет игнорировать путь к файлу в Chrome, а также будет исправлять путь для браузеров IE. При сохранении файла вам нужно использовать метод System.io.Path.GetFileName, чтобы получить имя файла только для браузеров IE.

var fileUpload    = $("#ContentPlaceHolder1_FileUpload_mediaFile").get(0); 
var files         =  fileUpload.files; 
var mediafilename = ""; 

for (var i = 0; i < files.length; i++) { 
  mediafilename = files[i].name; 
} 

Ответ 10

var filename=location.href.substr(location.href.lastIndexOf("/")+1);
alert(filename);