将图像文件从/ storage / emulated / 0 / Pictures复制到cordova中的另一个目录

时间:2016-06-09 15:54:36

标签: angularjs cordova ngcordova

我正在构建一个小型混合应用程序。我使用cordova-base64-to-gallery plugin将裁剪后的图像(使用Croppie)转换为png文件,然后将png文件存储在手机图片库的Picture's文件夹中。将base64字符串保存到图像到目前为止效果很好,我可以在图库中看到它。但我的问题是如何复制此图像,将路径作为 /storage/emulated/0/Pictures/img_imageFile.png 返回到 cordova.file.dataDirectory 使用ngCordova file plugin

这是我的angularjs代码

// Beginning the conversion process...
cordova.base64ToGallery(base64ImageString, {
                                             prefix : 'img_',
                                             mediaScanner : true
                                           },

     function (path) {
         //path = /storage/emulated/0/Pictures/img_imageFile.png
         //console.log(path);
         var sourceDirectory = path.substring(0, path.lastIndexOf('/') + 1);
         var sourceFileName = path.substring(path.lastIndexOf('/') + 1, path.length);

         $cordovaFile.copyFile(sourceDirectory, sourceFileName,  cordova.file.dataDirectory).then(function (success) {
             //$scope.profileImage = cordova.file.dataDirectory + sourceFileName;
             alert("Request Successfully Completed");
         }, function (error) {
             console.dir(error);
             alert("Error: " + error); // returns Error: [object Object]
         });

     }, function (err) {
             console.error(err);                             
     });
 });

我正在使用Onsen2,Cordova6.2.0,cordova-plugin-file 4.2.0,android 6

我仍然很新,并会感谢我的问题或更好的方法的任何解决方案。谢谢:))

1 个答案:

答案 0 :(得分:1)

我找到了!经过几个小时的实验和谷歌搜索后,我发现了另一个插件(Cordova saveImageGallery on Github),这实际上是我之前使用的一个增强版。 这是我需要的人的代码,尽管你可以从插件的页面获得更多信息

var params = {data: base64ImageString, prefix: 'img_', format: 'JPG', quality: 80, mediaScanner: true};
window.imageSaver.saveBase64Image(params,

   function (filePath) {
      //console.log('File saved on ' + filePath) = file:///storage/emulated/0/Pictures/img_imageFile.png
      var sourceDirectory = filePath.substring(0, filePath.lastIndexOf('/') + 1);
      var sourceFileName = filePath.substring(filePath.lastIndexOf('/') + 1, filePath.length);

      $cordovaFile.copyFile(sourceDirectory, sourceFileName,  cordova.file.dataDirectory).then(function (success) {
          alert("Request Successfully Completed");
      }, function (error) {
         console.dir(error);
         alert("Error: " + error);
      });
   },
   function (msg) {
      console.error(msg);
   }
);

请记住先安装插件。感谢任何试图调查此事的人:)