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不起作用,