JQuery - атрибуты файлов
Попытка получить доступ к атрибутам файла из поля ввода после выбора файла.
Пробовал это, но получил ошибку "файл не определен"
var file = $("#uploadedfile").prop("files")[0];
var fileName = file.fileName;
var fileSize = file.fileSize;
alert("Uploading: "+fileName+" @ "+fileSize+"bytes");
Ответы
Ответ 1
Если #uploadedfile
- это ввод с типом "файл":
var file = $("#uploadedfile")[0].files[0];
var fileName = file.name;
var fileSize = file.size;
alert("Uploading: "+fileName+" @ "+fileSize+"bytes");
Обычно это срабатывает в событии изменения, например:
$("#uploadedfile").on("change", function(){
var file = this.files[0],
fileName = file.name,
fileSize = file.size;
alert("Uploading: "+fileName+" @ "+fileSize+"bytes");
CustomFileHandlingFunction(file);
});
EDIT: Кевин прав в своем комментарии о свойстве файлов, отредактированном!
ИЗМЕНИТЬ СНОВА: Правильный синтаксис не
filename = this.files[0].filename;
но
filename = this.files[0].name;
filesize = this.files[0].size;
Добавление скрипта, который должен работать с перекрестным браузером: http://jsfiddle.net/eq3Qv/
Ответ 2
<form id = "uploadForm" name = "uploadForm" enctype="multipart/form-data">
<label for="uploadFile">Upload Your File</label>
<input type="file" name="uploadFile" id="uploadFile">
</form>
<script>
$('#uploadFile').change(function(){
var fileName = this.files[0].name;
var fileSize = this.files[0].size;
var fileType = this.files[0].type;
alert('FileName : ' + fileName + '\nFileSize : ' + fileSize + ' bytes');
});
</script>
Примечание:
Чтобы получить имя файла для загрузки, используйте метод jquery val().
Для Ex:
var fileName = $('#uploadFile').val();
Я проверил этот выше код перед публикацией, он отлично работает.!
Ответ 3
Чтобы получить имена файлов, используйте:
var files = document.getElementById('inputElementID').files;
Используя jQuery (поскольку вы уже это сделали), вы можете адаптировать его к следующему:
$('input[type="file"][multiple]').change(
function(e){
var files = this.files;
for (i=0;i<files.length;i++){
console.log(files[i].fileName + ' (' + files[i].fileSize + ').');
}
return false;
});
JS Fiddle demo.
Ответ 4
Просто попробуйте
var file = $("#uploadedfile").prop("files")[0];
var fileName = file.name;
var fileSize = file.size;
alert("Uploading: "+fileName+" @ "+fileSize+"bytes");
Это сработало для меня
Ответ 5
Атрибут input.files
- это функция HTML5. Вот почему некоторые браузеры ничего не возвращают.
Просто добавьте резерв к старой старой input.value
(string), если files
не существует.
ссылка: http://www.w3.org/TR/2012/WD-html5-20121025/common-input-element-apis.html#dom-input-files