【问题标题】:How to use Cordova Camera plugin with File Transfer?如何在文件传输中使用 Cordova 相机插件?
【发布时间】:2016-12-18 22:18:02
【问题描述】:

我正在尝试上传从相机拍摄的照片,但在将生成的照片与文件传输绑定时遇到问题。

我已经安装了以下插件: 科尔多瓦插件相机,科尔多瓦插件文件,科尔多瓦插件文件传输

我可以拍照并将其显示在离子页面中。我不明白的是如何将该照片与文件传输过程联系起来。拍摄和上传实时照片的真实端到端示例。

到目前为止,我遇到了很多拍照的例子——或者——上传以前存在的文件。但不是一次性的。

在相关说明中,我使用浏览器相机功能进行了这项工作,并且可以成功地将文件对象上传到我的 Web 服务(用 C# 编写)。它适用于 iOS,但最近 Android 设备由于某种原因不再提供实时照片(很想知道原因)。

有没有拍摄照片、上传照片和上传到 C# 编写的网络服务的端到端示例?

【问题讨论】:

  • 另外,我有一个有效的网络服务,可以使用浏览器的相机捕获和输入类型文件正确接收图像文件。这个文件作为一个对象出现——我怎样才能从 Cordova 获得相同类型的文件对象?
  • ALTERNATIVELY 2:我可能需要修改我的 Web 服务以将 Base64String 图像数据转换为字节数组。类似于 C# 代码:byte[] bytes = Convert.FromBase64String(the-bytes-received-from-cordova);
  • 已解决!我有两个问题。一是我混淆了destinationType / sourceType 的参数(请参阅下面的radyz 解决方案)。另一个是我的网络服务需要更新以从 Base64String 转换上传的流(正如我上面提到的)

标签: c# cordova ionic-framework camera file-transfer


【解决方案1】:

您是否尝试过这样做:

var options = {
    quality: 75,
    destinationType: Camera.DestinationType.FILE_URL,
    sourceType: Camera.PictureSourceType.CAMERA,
    allowEdit: false,
    encodingType: Camera.EncodingType.JPEG,
    targetWidth: 720,
    targetHeight: 1280,
    popoverOptions: CameraPopoverOptions,
    saveToPhotoAlbum: false,
    correctOrientation: true
};

return $cordovaCamera.getPicture(options).then(upload);

function upload(filePath) {
    return $cordovaFileTransfer.upload('http://example.com', filePath, {
        fileKey: 'file',
        fileName: 'example.jpeg',
        mimeType: 'image/jpeg'
    });
}

【讨论】:

  • 我需要拍照,而不是选择现有的照片(如果我没记错的话,这是与 DATA_URL 不同的目的地类型)。我可以拍照并显示它,但不确定要发送什么文件传输。我现在正在尝试一种不同的方法,即使用我现有的文件传输 Web 服务,当我向它发送一个文件对象(从浏览器输入类型文件中获得,带有摄像头捕获)时它就可以工作。但是 Cordova 返回的文件对象似乎不同......
  • 您可以注意到我正在使用destinationType: Camera.DestinationType.FILE_URL,它将返回存储图像的文件路径。然后,您可以将此路径设置为 img.src 标记(如果需要显示快速预览),也可以将其传递给 $cordovaFileTransfer.upload 方法,如上面代码的 sn-p 所示。顺便说一句,这将拍摄一张新照片,而不是选择现有的照片。 $cordovaCamera.getPicture 方法将在您的设备中打开相机应用程序。
  • 你是对的;把它归结为疲惫的眼睛,但我正在更改源类型而不是目标类型。难怪没有任何意义。让我看看我现在用这个去哪里。感谢您指出这一点!
  • 如果对您有任何帮助,请将其标记为已接受 :)
  • 谢谢,这确实是我的问题的一部分!另一部分是我需要更新我的 Web 服务以从 base64string 转换上传的字节: byte[] bytes = Convert.FromBase64String(the-bytes-received-from-cordova)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-05-14
  • 2018-02-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多