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

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

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

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

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

【问题讨论】:

    标签: javascript jquery ios cordova


    【解决方案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 上传多个文件或使用本机代码来执行此操作。
    猜你喜欢
    • 1970-01-01
    • 2015-12-01
    • 2021-05-05
    • 2013-03-30
    • 2021-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多