使用File API polyfill读取数据URL

时间:2013-05-23 10:55:51

标签: javascript html5 fileapi polyfills

我正在尝试使用文件API库(https://github.com/mailru/FileAPI)作为不支持File API的浏览器的后备,以便将文件作为数据URL读取并将其传递给另一个函数。

我有这段代码:

function handleFileSelect(event) {
    // If supported, use native File API.
    if(window.FileReader != null) {
        console.log('Using native File API.'); // !
        var files = event.target.files;
        for(var i = 0, f; f = files[i]; i++) {
            var reader = new FileReader();
            reader.onload = function(event) {
                insertImage(event.target.result);
            };
            reader.readAsDataURL(f);
         }
    }
// Otherwise, use fallback polyfill for browsers not supporting native API.
else {
    console.log('Using polyfill for File API.'); // !
    var file = FileAPI.getFiles(event.target);
    FileAPI.readAsDataURL(file, function(evt) {
        console.log(evt);
    });
  }
}

但是,console.log(evt)返回一个报告错误的对象:“filreader_not_support_DataURL”。

我是否在使用File API polyfill时遇到了问题,或者我是否需要使用垫片或其他polyfill来使数据URL正常工作?

感谢。

- Sam。

2 个答案:

答案 0 :(得分:1)

功能已通过flash实现 - 感谢FileAPI插件的作者。

// bind to your upload container
var el = document.getElementById('uploadElementId');
FileAPI.event.on(el, 'change', function (evt/**Event*/) {
    var files = FileAPI.getFiles(evt);
    // get Data URL for the first file
    FileAPI.readAsDataURL(files[0], function (dataUrlObject) {
        if (dataUrlObject.type == 'load') {
            // Success                    
            var dataUrl = dataUrlObject.result;
        }
    });
});

这里的整个帖子:https://github.com/mailru/FileAPI/issues/153

答案 1 :(得分:0)

我认为错误信息很明确。您希望使用此polyfill将文件读取为数据URL,并告诉您它不支持数据URL。所以我假设没有其他方法可以做到这一点。