كيفية تحديد ما إذا كان المستخدم قد اختار ملفًا لتحميل الملف؟
-
09-06-2019 - |
سؤال
إذا كان لدي
<input id="uploadFile" type="file" />
علامة، وزر إرسال، كيف يمكنني تحديد، في IE6 (وما فوق) ما إذا كان قد تم تحديد ملف من قبل المستخدم.
في FF، أفعل فقط:
var selected = document.getElementById("uploadBox").files.length > 0;
ولكن هذا لا يعمل في IE.
المحلول
يعمل هذا في IE (و FF، على ما أعتقد):
if(document.getElementById("uploadBox").value != "") {
// you have a file
}
نصائح أخرى
يعمل هذا الجزء من التعليمات البرمجية في بيئتي المحلية، وآمل أن يعمل أيضًا في البث المباشر
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.log('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.log(true) } else { console.log(false) }
if (files[0] == undefined) { console.log(true) } else { console.log(false) }
if (files[0] == null) { console.log(true) } else { console.log(false) }
الثلاثة يعطون نفس النتيجة.
لا تنتمي إلى StackOverflow