Если у меня есть
<input id = "uploadFile" type = "file" />
тег и кнопку отправки, как определить в IE6 (и выше), был ли файл выбран пользователем.
В FF я просто делаю:
var selected = document.getElementById("uploadBox").files.length > 0;
Но в IE это не работает.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Это работает в IE (и, я полагаю, FF):
if (document.getElementById("uploadBox").value != "") {
// you have a file
}
Не работает в Chrome (75), получаю значения для файлов и папок
@Cid - похоже, работает, как описано мной в этом ответе, не уверен, в чем проблема. Вы полностью прочитали исходный вопрос? Вы прочитали мой ответ?
Я даже не помню, что искал месяц назад, полагаю, я искал способ проверить, ввел ли пользователь файл или папку. Теперь я понимаю, что этот комментарий был не по теме, и, возможно, я неправильно прочитал вопрос
этот фрагмент кода работает в моей локальной среде, надеюсь, он также будет работать в реальном времени
var nme = document.getElementById("uploadFile");
if (nme.value.length < 4) {
alert('Must Select any of your photo for upload!');
nme.focus();
return false;
}
function validateAndUpload(input){
var URL = window.URL || window.webkitURL;
var file = input.files[0];
if (file) {
var image = new Image();
image.onload = function() {
if (this.width) {
console.info('Image has width, I think it is real image');
//TODO: upload to backend
}
};
image.src = URL.createObjectURL(file);
}
};
<input type = "file" name = "uploadPicture" accept = "image/*" onChange = "validateAndUpload(this);"/>
Вызов этой функции при изменении.
Вы можете использовать:
var files = uploadFile.files;
if (files.length == 0) { console.info(true) } else { console.info(false) }
if (files[0] == undefined) { console.info(true) } else { console.info(false) }
if (files[0] == null) { console.info(true) } else { console.info(false) }
Все три дают одинаковый результат.
дубликат stackoverflow.com/q/25793880