我正在使用 PhoneGap 开发 iPhone 应用程序。
在这个应用程序中,我需要显示一个带有相机胶卷图片的屏幕,并且用户应该能够从中选择多张照片。
使用navigator.camera.getPicture
I 可以显示所有图像,但用户只能从中选择一张图像。
返回的 imageURI 是
file://localhost/var/mobile/Applications/946FDEC2-E166-4209-94F8-5E2C70EEDA71/tmp/cdv_photo_010.jpg
并尝试使用文件 api 如下。
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(fileSystem){
// success get file system
var sdcard = fileSystem.root;
sdcard.getDirectory("../../../Media/DCIM/100APPLE",
{create:false, exclusive: false},
function(dcim){
var directoryReader = dcim.createReader();
directoryReader.readEntries(function(entries){
// success get files and folders
for(var i=0; i<entries.length; ++i){
alert(entries[i].name);
}
});
}, function(error){
switch(error.code){
case FileError.NOT_FOUND_ERR : alert('NOT_FOUND_ERR');break;
case FileError.SECURITY_ERR: alert('SECURITY_ERR');break;
case FileError.ABORT_ERR: alert('ABORT_ERR');break;
case FileError.NOT_READABLE_ERR: alert('NOT_READABLE_ERR');break;
case FileError.ENCODING_ERR: alert('ENCODING_ERR');break;
case FileError.NO_MODIFICATION_ALLOWED_ERR: alert('NO_MODIFICATION_ALLOWED_ERR');break;
case FileError.INVALID_STATE_ERR: alert('INVALID_STATE_ERR');break;
case FileError.SYNTAX_ERR: alert('SYNTAX_ERR');break;
case FileError.INVALID_MODIFICATION_ERR: alert('INVALID_MODIFICATION_ERR');break;
case FileError.QUOTA_EXCEEDED_ERR: alert('QUOTA_EXCEEDED_ERR');break;
case FileError.TYPE_MISMATCH_ERR: alert('TYPE_MISMATCH_ERR');break;
case FileError.PATH_EXISTS_ERR: alert('NOT_FOUND_ERR');break;
}
});
这适用于模拟器。
但是当在 iPhone 中尝试时,它会显示错误并且 iPhone 中没有DCIM
文件夹../../../Media
。
我的 iPhone 型号是iPhone 4S 16Gb with iOS 6.0
我想知道
- 这种方法有什么问题吗?
- 正确的路径是什么,而不是
../../../Media/DCIM/100APPLE
保存相机胶卷图片的路径? - 是否有存储上述路径的元文件?
- 有没有其他方法可以实现这一点(从相机胶卷中选择多个文件的选项)?