这是我使用cordova相机插件从照片库中选择图像的功能;
$('#select').click(function() {
navigator.camera.getPicture(onSuccess, onFail, { quality: 50,
destinationType: Camera.DestinationType.FILE_URL,
sourceType: Camera.PictureSourceType.PHOTOLIBRARY });
function onSuccess(imageURI) {
window.resolveLocalFileSystemURL(imageURI, function(entry) {
debugger;
fs.root.getDirectory('InsectFinder', {}, function(dirEntry) {
debugger;
dirEntry.getDirectory('FundmeldungPictures', {}, function(dirDirEntry) {
debugger;
var newFileName = fundmeldungInsectId + "_" + (images.length+1) + ".jpg";
entry.copyTo(dirDirEntry, newFileName, function(newEntry) {
debugger;
var img = {name: newFileName, id: images.length+1};
images = images.concat(img);
bilderDataSource.data(images);
console.log("yay");
}, errorHandler);
}, errorHandler);
}, errorHandler);
}, errorHandler);
}
function onFail(message) {
console.error('Failed because: ' + message);
}
});
问题是,当我到达copyTo
函数时,我收到代码1000的错误。
使用手机相机拍摄图像时,我有相同的代码,工作正常。
编辑: 这是我请求文件系统的函数。我将fs声明为全局变量,因此我可以在不同的时间访问此文件系统。
window.requestFileSystem(window.PERSISTENT, 100*1024*1024, function(filesystem) {
console.log("opened file system: " + filesystem.name);
fs = filesystem;
}, errorHandler);
编辑: 当我调试copyTo函数时,我认为它在这一行失败了:
var messages = nativeApiProvider.get().exec(bridgeSecret, service, action, callbackId, argsJson);
在此功能之后,消息未定义
在随后的错误处理中,我得到以下processMessage:
"S01 File1981269537 {"isFile":false,"isDirectory":true,"name":"FundmeldungPictures","fullPath":"\/InsectFinder\/FundmeldungPictures","filesystemName":"persistent","filesystem":1,"nativeURL":"file:\/\/\/storage\/emulated\/0\/InsectFinder\/FundmeldungPictures\/"}"
答案 0 :(得分:0)
我通过返回图像的DATA_URL
并将其写入文件系统中的新文件来解决此问题。