【发布时间】:2015-06-18 00:08:44
【问题描述】:
使用http://plugins.cordova.io/#/package/org.apache.cordova.file 并安装插件 = org.apache.cordova.file 1.3.3 "File"
我捕获了一张图片并尝试将其转换为 base64。返回的图片位置(下面的var路径)是“assets-library://asset/asset.JPG?id=ECB406E6-E361-46AA-9282-FEEBDAC170DF&ext=JPG”
起初,从文档看来,我所需要的只是:
// Convert to image URL base64
var fileReader = new FileReader();
fileReader.onloadend = function (data) {
console.log(data.target.result);
};
fileReader.readAsDataURL(path);
代码已执行,但回调从未触发!然后我四处挖掘并添加了一堆其他 fileReader 选项......实际上执行的恰好为零。 iOS 和 Android 上的行为相同
fileReader.onload = function (data) {
console.log("onload", data);
};
fileReader.onerror = function (data) {
console.log("error!", data);
};
fileReader.onloadstart = function (data) {
console.log("onloadstart", data);
};
我没有收到任何 JS 错误,但也没有收到任何控制台输出。
1) 为什么 Cordova 文件 FileReader() 回调没有触发?
更新
我也尝试使用 ngCordova 的文件插件,http://ngcordova.com/docs/plugins/file/
$cordovaFile.readAsDataURL('assets-library://asset/', 'asset.JPG?id=ECB406E6-E361-46AA-9282-FEEBDAC170DF&ext=JPG')
.then(function (success) {
// success
console.log("ng success", success);
}, function (error) {
// error
console.log("ng error", error);
});
我收到以下错误:
成功回调Id错误:File1336724899:TypeError:未定义是 不是函数(评估'e.getFile')
【问题讨论】:
-
我猜您需要使用常规 URL,而不是资产库 URL。为了确认我可能会尝试在网站上使用图片来查看它是否会加载...
-
谢谢@Mike,1)为什么我不会收到错误消息? 2)如果我将路径传送到 img 的 ng-src 或其他东西,它工作得非常好 3)我确实需要访问该图像以发送,关于如何发送的任何建议?
-
我不知道是否缺少错误 - 也许它在解析 URL 时会卡住。无论如何,如果您使用的是 cordova photo 插件,您可以使用 FILE_URI 选项来获取“普通”文件 url。
-
我正在使用cordova相机预览插件,因为我需要实时预览,然后它会捕获图像。奇怪的是访问路径本身是如此尴尬......
-
相机插件本机将原始照片数据从资产库复制到用户目录以支持 FILE_URI 选项。你可能不得不做类似的事情......
标签: cordova cordova-plugins ngcordova