كيفية تحديد ما إذا كان المستخدم قد اختار ملفًا لتحميل الملف؟

StackOverflow https://stackoverflow.com/questions/46219

  •  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) }

الثلاثة يعطون نفس النتيجة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top