html - phonegap filereader onloadend 不起作用

标签 html cordova cordova-2.0.0 cordova-3

我正在使用phonegap 拍照并将其放入img 容器中。

navigator.camera.getPicture(onSuccess, onFail);

var onSuccess =  function(imageURI) {
        var pic = document.getElementById('picture');
        pic.style.display = 'block';
        pic.src = imageURI;
};

var onFail = function(message) {
        $('#infoField').val(message);
};

效果很完美。现在我想加载图片的格式,以便能够通过 websocket 发送它。因此,我使用 fileReader 并将类型设置为 dataUrl。

var reader = new FileReader();

reader.onloadend = function(evt) {
      $('textarea#textarea1').val("evt triggered");
      //var socket = io.connect(addr);
      //socket.emit('mobilePicture', "works");
};

reader.readAsDataURL(document.getElementById('picture').src);

不幸的是,什么也没发生。无论如何,onloadend 事件都不会被触发。有什么想法吗?

最佳答案

尝试重新排列您的代码,如下所示:

var onSuccess =  function(imageURI) {
        var pic = document.getElementById('picture');
        pic.style.display = 'block';
        pic.src = imageURI;

        var reader = new FileReader();

        reader.onloadend = function(evt) {
              $('textarea#textarea1').val("evt triggered");
              //var socket = io.connect(addr);
              //socket.emit('mobilePicture', "works");
        };

        reader.readAsDataURL(imageURI);
};

var onFail = function(message) {
        $('#infoField').val(message);
};

navigator.camera.getPicture(onSuccess, onFail);

您必须将文件对象传递给file.reader,而不仅仅是文件的路径。

编辑/更新:
要首先通过路径在文件系统上查找文件,您需要使用 fileSystem 创建一个 fileEntry:

示例

window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFS, fail);

function gotFS(fileSystem) {
    fileSystem.root.getFile("readme.txt", {create: true, exclusive: false}, gotFileEntry, fail);
}

function gotFileEntry(fileEntry) {
    //fileEntry
    alert("Got the fileEntry!");
    reader.readAsDataURL(fileEntry);
    ...
}

关于html - phonegap filereader onloadend 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20073302/

相关文章:

ios - 将 Cordova Framework 从 2.0.0 升级到 2.5.0

javascript - 在 cordova 应用程序中找不到插件

html - 使用 html 和 css 创建电子邮件布局 - 自动换行

javascript - jQuery - 无法获取使用 load() 方法从另一个文件加载的 header 的高度

ios - 为 ios 构建时,console.log 在 phonegap 中不起作用(已安装插件)

javascript - 在页面加载时获取 safe-area-inset-bottom

javascript - History.pushState 和遍历历史 - PhoneGap/Android

html - 未应用 HTML5 "article"标记上的第一个子项和第 n 个子项选择器

html - 将内容与图像对齐

cordova - 没有 WebSQL 的跨平台移动开发的 future