Phonegap:在单个请求中上传多个图像

Posted

技术标签:

【中文标题】Phonegap:在单个请求中上传多个图像【英文标题】:Phonegap: Uploading Multiple Images in a single request 【发布时间】:2015-03-11 17:51:34 【问题描述】:

如何发送从camera plugin 拍摄的两张图像并将其与其他数据一起发布到服务器。

我首先尝试了 FileTransfer() 插件,但它一次只能有一个文件的限制。比我尝试使用 xhr 发送两个文件但我只有来自camera plugin 的 DATA_URI,如何将 DATA_URI 转换为文件对象以便将其发送到服务器?

图像在 DOM 中显示得非常好,是否可以将其转换为文件对象并将其发送到服务器?

编辑:使用 base64 会导致 ios 设备出现内存问题,因此也不能使用它

【问题讨论】:

【参考方案1】:

来自文档:

destinationType: Choose the format of the return value. The default is FILE_URI. Defined in navigator.camera.DestinationType (Number)

Camera.DestinationType = 
    DATA_URL : 0,      // Return image as base64-encoded string
    FILE_URI : 1,      // Return image file URI
    NATIVE_URI : 2     // Return image native URI (e.g., assets-library:// on iOS or content:// on android)
;

如果您将目标类型设置为 DATA_URL,您将可以访问图片的 base64 编码版本。

然后您可以简单地将这个字符串和许多其他图像字符串连同您的 JSON 负载一起发布到您的 Web 服务进行处理。

【讨论】:

使用 Base64 会导致内存问题,所以我避免使用 Base64。我已经更新了我的问题,很抱歉造成混乱 那么你就被卡住了,这确实是你可以通过 ajax 将图像连同你的 json 有效负载一起通过一次调用发送的唯一方法。或者,您可以首先使用 ajax POST 来返回某种类型的事务 id。然后,您可以使用该事务 id 使用本机目标 c 发布图像。您需要先将图像转换为 NSDATA。我不确定是否存在针对这种特定情况的插件,但编写起来不会太难。 使用当前显示在 DOM 中的图像有什么解决方法吗? 我不知道。您要求图像的对象表示......这将是 base64 版本。如果这还不够,你会被卡住。否则,您可以在我上面的评论中遵循我的建议。 您可以多次调用 ajax 来使用 PhoneGap 上传多个文件或使用本机代码来执行此操作。

以上是关于Phonegap:在单个请求中上传多个图像的主要内容,如果未能解决你的问题,请参考以下文章

如何从 django admin 中的单个“选择文件”选择器上传多个图像

$_files 在 Phonegap/Cordova 中的图像上传中为空 [关闭]

Phonegap ios图像上传为formdata不起作用,

使用 PHP 和单个 HTML 输入将多个图像上传到服务器和数据库[重复]

Laravel 为单个项目上传多个文件并进行验证

如何使用Paperclip在Rails 4中上传多个图像