在PhoneGap中读取图像捕获文件

Con*_*oob 5 javascript iphone ios cordova

我正在开发一个PhoneGap应用程序,它使用相机捕获图像,然后上传它们.PhoneGap中的摄像头有两种操作模式:raw base64编码数据或文件URI.

文档本身说:

注意:在较新设备上使用相机拍摄的照片的图像质量非常好.使用Base64对这些图像进行编码会导致某些设备(iPhone 4,BlackBerry Torch 9800)出现内存问题.因此,强烈建议使用FILE_URI作为'Camera.destinationType'.

所以我热衷于使用FILE_URI选项.这很好用,您甚至可以在IMG标签中显示图像.URL如下所示:

文件://localhost/var/mobile/Applications/4FE4642B-944C-449BB-9BD6-1E442E47C7CE/tmp/photo_047.jpg

但是,稍后我想读取要上传到服务器的文件内容.我打算使用FileReader类型执行此操作.这不起作用,我认为这是因为我无法访问上面的URL文件.

我从readDataUrl返回的错误代码是1> FileError.NOT_FOUND_ERR = 1;

我有什么想法可以访问该文件?我试着根据我看到的另一个样本访问路径的最后一部分(photo_047.jpg),但没有运气.

jga*_*ers 1

我刚刚开始使用 PhoneGap,考虑到这个问题的年龄,您可能已经找到了答案,但无论如何我都会尝试一下。

首先,您能够使用内置的FileTransfer对象吗?它采用file: URI 作为参数。

如果FileTransfer不适合您,并且您需要自己读取文件数据,那么您将需要 PhoneGap File对象,如FileReader,如您所说。但大多数人都希望使用简单的路径名(而不是 URI)来指定要使用的文件。您收到 NOT_FOUND_ERR 的原因是因为它试图打开一个名为file:/localhost/var...的文件。

下面是从 URI 中提取路径部分的快速方法:

var path = /file:\/\/.*?(\/.*)/.exec(fileuri)[1];

希望这可以帮助!