Используйте jQuery, чтобы получить выбранное имя файла ввода без пути
я использовал этот:
$('input[type=file]').val()
чтобы выбрать имя файла, но он вернул полный путь, как в "C:fakepathfilename.доктор." Часть "fakepath" на самом деле была там - не уверен, что это должно быть, но это мой первый раз, когда я работаю с именем файла загрузки файлов.
Как я могу просто получить имя файла (filename.док)?
11 ответов:
var filename = $('input[type=file]').val().split('\').pop();или вы могли бы просто сделать (потому что это всегда
C:\fakepathэто добавлено по соображениям безопасности):var filename = $('input[type=file]').val().replace(/C:\fakepath\/i, '')
вам просто нужно сделать код ниже. Первый [0] - это доступ к элементу HTML, а второй [0] - доступ к первому файлу загрузки файла (я включил проверку в случае отсутствия файла):
var filename = $('input[type=file]')[0].files.length ? ('input[type=file]')[0].files[0].name : "";
Chrome возвращает
C:\fakepath\...по соображениям безопасности - сайт не должен быть в состоянии получить информацию о вашем компьютере, такие как путь к файлу на вашем компьютере.чтобы получить только часть имени файла строки, вы можете использовать
split()...var file = path.split('\').pop();...или регулярные выражения...
var file = path.match(/\([^\]+)$/)[1];...или
lastIndexOf()...var file = path.substr(path.lastIndexOf('\') + 1);
показать путь работы со всеми ОС
var filename = $('input[type=file]').val().replace(/.*(\/|\)/, '');пример
C:\fakepath\filename.doc /var/fakepath/filename.docкак вернуть
filename.doc filename.doc
вот как я это делаю, это работает довольно хорошо.
в вашем HTML do:
<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
может быть, некоторые дополнения для избежать 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);
Как насчет чего-то вроде этого?
var pathArray = $('input[type=file]').val().split('\'); alert(pathArray[pathArray.length - 1]);
Это должен быть jquery? Или вы можете просто использовать родной JavaScript
yourpath.split("\")разбить строку на массив?
получить первый файл из элемента управления, а затем получить имя файла, он будет игнорировать путь к файлу на Chrome, а также сделает коррекцию пути для браузеров IE. При сохранении файла, вы должны использовать
System.io.Path.GetFileNameметод, чтобы получить имя файла только для браузеров IEvar fileUpload = $("#ContentPlaceHolder1_FileUpload_mediaFile").get(0); var files = fileUpload.files; var mediafilename = ""; for (var i = 0; i < files.length; i++) { mediafilename = files[i].name; }
<script type="text/javascript"> $('#upload').on('change',function(){ // output raw value of file input $('#filename').html($(this).val().replace(/.*(\/|\)/, '')); // or, manipulate it further with regex etc. var filename = $(this).val().replace(/.*(\/|\)/, ''); // .. do your magic $('#filename').html(filename); }); </script>
Comments