我正在使用以下方法通过FileReader API处理文件上传,我似乎没有在Firefox 31.0中获取读者对象:

var processFileUpload = function(event) {
    var fileInput = event.target;
    var file = fileInput.files[0];
    if (typeof file !== 'undefined' && file !== null && file.hasOwnProperty('size') && file.size > 0) {
        var reader = new FileReader();
        reader.onload = function(e) {
            file_url = reader.result;
            saveFile(file_url, file.name, file.type, file_category);
        };
        reader.readAsDataURL(file);
    }
};

在萤火虫中,我有两行断点:

reader.readAsDataURL(file);

file_url = reader.result;

当我选择一个文件时,它会在第一个断点处按预期中断: reader.readAsDataURL(file);

为了达到这一点,它必须经历 var reader = new FileReader();

此时相关变量的值为:

file = { size: 21720, type: "application/vnd.openxmlformats-officedocument.wordprocessingml.document", name: "Example.docx", path: "", lastModifiedDate: Date 2014-08-14T09:29:49.000Z, mozFullPath: "" }

reader = undefined

file_url = reader.result; 上的断点永远不会被击中 .

为什么 reader 未定义?为什么它的onload被调用?我哪里错了?