我在 iOS 7 (Cordova 3.4.0-0.1.3 - File API 1.0.1) 下将相机照片移动到持久存储时遇到问题。
我可以捕获照片,当我将文件移动到持久存储时,似乎没有错误,我还收到一个带有 new_entry.fullPath
的文件路径,如/my_folder/12345678.jpg .
但是当我使用该网址将新图像附加到正文时,似乎没有图像(将添加空白图像)。我也尝试过在网址中使用“file://”,但这没有什么区别。
我也有点困惑,因为 new_entry.toURL()
方法返回了一个包含名为“temporary”的文件夹的 URL(例如 cdvfile://localhost/temporary/my_folder/12345678 .jpg),但我使用持久存储。在 iOS 下正确吗?
这是我该函数的相关代码:
var app = {
capturePhoto: function () {
if (!navigator.camera) {
alert('Camera API not supported');
}
navigator.camera.getPicture( app.cameraSuccess, app.cameraError, {
quality: 50,
destinationType: Camera.DestinationType.FILE_URI
});
},
cameraSuccess: function (imageData) {
console.log('cameraSuccess: '+imageData);
app.movePhoto( imageData );
},
movePhoto: function (file){
alert(file);
window.resolveLocalFileSystemURI( file , app.resolveOnSuccess, app.resOnError);
},
resolveOnSuccess: function (entry){
var d = new Date();
var n = d.getTime();
//new file name
var newFileName = n + ".jpg";
var myFolderApp = "my_folder";
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(fileSys) {
fileSys.root.getDirectory( myFolderApp,
{create:true},
function(directory) {
entry.moveTo(directory, newFileName, function(new_entry){
path = new_entry.fullPath;
url = new_entry.toURL();
console.log(path+"\n"+url);
alert( path+"\n"+url );
jQuery('body').append('<img src="'+path+'" />');
}, app.resOnError);
},
app.resOnError);
},
app.resOnError);
},
resOnError: function(error) {
alert('Error '+error.code+': '+error.message);
},
}
最佳答案
2014年5月27日更新:版本1.1.0已发布,因此不再需要使用dev分支。
这是 Cordova 中的一个错误:https://issues.apache.org/jira/browse/CB-6148
它已经在 dev 分支中修复。您可以通过以下步骤更新到 dev 分支:
删除插件:
cordova plugin rm org.apache.cordova.file
安装插件(在本例中我们必须使用 git 语法):
cordova plugin add https://github.com/apache/cordova-plugin-file.git#dev
检查 iOS 构建 > 目标 > 您的应用程序目标 > 构建阶段 > 编译源 添加(如果没有添加)
CDVFile.m
CDVLocalFilesystem.m
CDVAssetLibraryFilesystem.m
关于ios - Cordova iOS 文件 API - 将照片移动到持久存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22865548/