Ionic 将图像从相机上传到服务器,并附加表单数据

Ionic upload an image from camera to server with additional form data

我一直在四处搜索,我已经阅读了关于这个问题的主题,但我相信我有点难以置信。

我的用例:用户用相机拍照,为其添加标题并将其发送到远程 API。

根据我的阅读,我要么必须添加一堆 Cordova 插件(FileFilePathFileTransfer"Ionic2 tut, but I believe this would be the same for Ionic3")。或者我会必须将相机拍摄模式从 FILE_URI 设置为 FILE_URL,但这可能会拖累旧手机的性能,也会拖累 back-end(但这还不是一个真正的问题,因为我我在 VPS 而不是云服务提供商)。

所以,我最终想到了两种可能的方法。

  1. 简单的方法;只做 FILE_URL,不关心可能受到影响的用户体验并使用 http.post...
  2. 发送数据
  3. 稍微复杂一点的方法。首先使用 link 和插件描述的 file-mechanism 发送文件,从登录用户发送带有 user_id 的自定义 header,等待响应在我需要的 table 中创建了一个条目,然后发送一个带有表单数据的 http.post.. 来完成 table.
  4. 中的记录

我也读到了 FormData object,但由于我的很大一部分用户将拥有 iOS 设备,我认为这不适合我的情况?至少根据 MSDN 的移动规格。不支持移动 Safari。但我必须承认,我不确定 iOS 是否将已编译的 Cordova/Ionic 应用程序视为浏览器应用程序。那么这可能是第三种选择吗?

如何最好地实施用例?还是就没有比上面描述的更多的选择了?

我不认为我是唯一提出这个问题的人,但我希望我已经添加了足够的上下文,未来的读者最终会思考一个或多个类似的问题,并可能找到答案。我的 back-end 是 PHP (Laravel),但在这种情况下这并不重要。

我忽略了允许 params 属性 的 FileUploadOptions 文档,这正是我需要的。