我正在开发一个 PhoneGap 应用程序,它使用相机捕捉图像,然后上传它们。 PhoneGap 中的摄像头有两种操作模式:原始 base64 编码数据或文件 URI。
文档本身说:
Note: The image quality of pictures taken using the camera on newer devices is quite good. Encoding such images using Base64 has caused memory issues on some of these devices (iPhone 4, BlackBerry Torch 9800). Therefore, using FILE_URI as the 'Camera.destinationType' is highly recommended.
所以我热衷于使用 FILE_URI 选项。这非常有效,您甚至可以在 IMG 标签中显示图像。网址如下所示:
file://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),但没有成功。
最佳答案
我刚刚开始使用 PhoneGap,考虑到这个问题的年代,您可能已经找到了答案,但无论如何我都会试一试。
首先,您能否使用内置的 FileTransfer 对象?它需要一个 file: URI 作为参数。
如果 FileTransfer 不适合您,而您需要自己读取文件数据,您将需要 PhoneGap File 对象,例如 FileReader ,正如你所说。但大多数人希望使用简单的路径名——而不是 URI——来指定要使用的文件。您收到 NOT_FOUND_ERR 的原因是因为它正在尝试打开名为 file:/localhost/var... 的文件。
这是从您的 URI 中提取路径部分的快速单行代码:
var path =/file:\/\/.*?(\/.*)/.exec(fileuri)[1];
希望这对您有所帮助!
关于javascript - 在 PhoneGap 中读取图像捕获文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7949631/