HTML5文件API:发生错误后,FileReader对象未定义

时间:2011-06-20 19:49:57

标签: javascript html5 filereader fileapi

我在Mac OS X上使用Chrome 12,我在文档中包含了jQuery 1.6.1。

我尝试使用以下代码读取文件,在读取文件时发生错误接缝,因此调用this.error.onerror(),但FileReader-Object this.reader不再存在而且我无法得到错误。我也不确定错误发生的原因,这是我想要阅读的常规文本文档。

function FileHandler(files, action) {
    console.log('FileHandler called.');

    this.files = files;
    this.reader = new FileReader();
    this.action = action;

    this.handle = function() {
        console.log('FileHandler.handle called.');

        for (var i = 0; i < this.files.length; i++) {
            this.reader.readAsDataURL(files[i]);
        }
    }

    this.upload = function() {
        console.log('FileHandler.upload called.');
        console.log(this.reader);

        data = {
            content: this.reader.result
        }

        console.log(data);
    }

    this.error = function() {
        console.log('An error occurred while reading a file.');
        console.log(this.reader.error);
    }

    this.reader.onload = this.upload;
    this.reader.onerror = this.error;
}

此代码创建以下控制台输出: http://cl.ly/0j1m3j0o3s071Y1K3A25

2 个答案:

答案 0 :(得分:0)

.onerror内,this与外部不同,因为它是一个新功能(带有新范围)。

通过静态设置this来跟踪var _this = this; // _this won't change this.reader.onerror = function() { console.log('An error occurred while reading a file.'); console.log(_this.reader.error); }

{{1}}

答案 1 :(得分:0)

这应该是正确的方法:

reader.onerror = function(event) {
    console.error("File could not be read: " + event.target.error);
};