javascript - 在 PhoneGap 中读取图像捕获文件

标签 javascript iphone ios cordova

我正在开发一个 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/

相关文章:

ios - 可以从 XCTest 中的其他测试用例中调用测试用例

ios - 如何向 NewsStand 应用程序添加免费订阅

iphone - SCNetworkReachabilityRef在Xcode上泄漏

ios - 防止 UIViewController 在模态旋转时旋转

javascript - 在 Symfony 中使用 javascript 和 css 来控制表单

javascript - 如何使用 jQuery 将两个 select 元素附加到表行?

ios - 解析不是从 iPhone 发送的可操作通知

ios - 使应用程序出现在共享面板中以接受来自其他应用程序的选定文本

javascript - 防止回调执行直到输入停止

javascript - 动态添加标签到面板不会刷新面板