javascript – 如何在cordova相机的成功回调中获取文件对象?

目前我正在使用以下方法,它提供文件的详细信息,但不是实际的对象,它似乎是我们从 javascript / jQuery中得到的.有没有人知道如何使用cordova和javascript从移动ios / android文件系统从文件URI /本机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()在我的情况下不起作用.

在从#SO获得现有Q& A之后从Append image file to form data – Cordova/Angular开始使用之后我正在使用的片段

解决方法

正如我所尝试的,Base64图像上传将在iOS / Android中运行:
至于iOS只有一种显示图像的方法是使用base64格式.你可以使用cordova-camera-plugin来生成base64图像并加上HTML的img标签.我已经设置了标志来获取jpeg中的数据,base64 in相机插件.
<img id="cardImg">

将base64图像存储在javascript变量中:

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

然后只需将数据传递给HTML的img标记

cardImg.src=imgdata;

完成!

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...