我正在使用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/