如何在科尔多瓦相机成功回调时获取文件对象



目前我正在使用以下方法,它提供了文件的详细信息,但没有提供实际对象,它似乎是我们在javascript/jQuery中得到的对象。有没有人知道如何使用 cordova 和 javascript 从移动 ios/android 文件系统中的文件 URI/native URI 获取文件对象?

以下是我目前使用的片段。

window.resolveLocalFileSystemURL(
  filepath,
  function(fileEntry) {
    fileEntry.file(
      function(file) {
        var reader = new FileReader();
        reader.onloadend = function() {
          var imgBlob = new Blob([this.result], {type: "image/jpeg"});
          var uploadedFile = imgBlob;
          uploadedFile.name = file.name;
          alert("Importing Asset from Camera.. " + uploadedFile.name);
          alert(uploadedFile.type);
          alert(uploadedFile.size);
          importAsset(uploadedFile);
        };
        reader.readAsArrayBuffer(file);
      },
      function(error) { alert("Error in fileEntry.file():" + error) })
  },
  function(error) { alert("Error in window.resolveLocalFileSystemURL():" + error) }
);

注意:FileTransfer.upload()在我的情况下不起作用。

上面的代码片段是我在从附加图像文件获取表单数据后使用的 - Cordova/Angular 在浏览了 #SO 的现有问答后

Base64 图像上传将在 iOS/Android 中同时工作,正如我所尝试的那样:至于iOS,只有一种方法可以显示图像,即使用base64格式。您可以使用cordova-camera-plugin来生成base64图像并放置HTML的img标签。我已经设置了标志以在相机插件中获取 jpeg,base64 中的数据。

<img id="cardImg">

将 base64 图像存储在 javascript 变量中,如下所示:

var imgdata=data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==

然后简单地将数据传递给HTML的img标签:

cardImg.src=imgdata;

做!

最新更新