Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 视频捕获不显示在手机的“我的多媒体资料”中_Angularjs_Cordova_Ionic Framework_Cordova Media Plugin - Fatal编程技术网

Angularjs 视频捕获不显示在手机的“我的多媒体资料”中

Angularjs 视频捕获不显示在手机的“我的多媒体资料”中,angularjs,cordova,ionic-framework,cordova-media-plugin,Angularjs,Cordova,Ionic Framework,Cordova Media Plugin,我正在使用ng cordova的插件捕获从手机上捕获离子框架内的()视频 $scope.captureVideo = function() { var options = { limit: 1, duration: 10 }; $cordovaCapture.captureVideo(options).then(function(videoData) { var i, path, len; for (i = 0, len = videoData.leng

我正在使用ng cordova的插件捕获从手机上捕获离子框架内的()视频

$scope.captureVideo = function() {
var options = { limit: 1, duration: 10 };

    $cordovaCapture.captureVideo(options).then(function(videoData) {
        var i, path, len;
        for (i = 0, len = videoData.length; i < len; i += 1) {
            path = videoData[i].fullPath;
            console.log("Path of the video is = " + path.toString());
        }
    }, function(err) {
        // An error occurred. Show a message to the user
    });
}

上面删除文件的代码导致错误代码:6。不允许修改

显然,从4.4版开始,我们无法从MICRO SD卡中删除和写入文件。它现在是只读的。。而且,当用户从库中删除文件时,该文件将无法用于项目。这是我想到的

我将视频文件复制到cordova的外部目录,在那里我可以在需要时读取文件并根据需要删除。需要的插件包括
cordova文件插件
cordova插件文件传输

.controller('yourCtrl', function($scope,$cordovaCapture,$sce,$cordovaFile, $cordovaFileTransfer, $timeout) {
       $cordovaCapture.captureVideo(options).then(function(videoData) {
            console.log(JSON.stringify(videoData[0]));
            console.log(cordova.file.externalDataDirectory);
             $cordovaFileTransfer.download(videoData[0].fullPath, cordova.file.externalDataDirectory + 'my-video.mp4', {}, true).then(
                                function(result)
                                {
                                    console.log('success: '+ result);
                                },
                                function (error)
                                {
                                    console.log('error: '+ JSON.stringify(error));
                                },function (progress) {
                                    $timeout(function () {
                                      $scope.downloadProgress = (progress.loaded / progress.total) * 100;
                                    });
                                  },false);
               $scope.clipSrc = $sce.trustAsResourceUrl(videoData[0].fullPath);
               //$scope.videoSrc = videoData[0].fullPath;
        }, function(err) {
          alert('Err: <br />'+ JSON.stringify(videoData));
        });

  //delete the file according to filename.

    $scope.deleteVideo= function(){
        $cordovaFile.removeFile(cordova.file.externalDataDirectory, "my-video.mp4")
          .then(function (result) {
            console.log('Success: deleting videoData file' + JSON.stringify(result));
          }, function (err) {
            console.log('Error: deleting videoData file' + JSON.stringify(err));
          });
      }

})
.controller('yourCtrl',函数($scope、$cordovaCapture、$sce、$cordovaFile、$cordovaFileTransfer、$timeout){
$cordovaCapture.captureVideo(选项)。然后(函数(视频数据){
log(JSON.stringify(videoData[0]);
log(cordova.file.externalDataDirectory);
$cordovaFileTransfer.download(视频数据[0]。完整路径,cordova.file.externalDataDirectory+'my video.mp4',{},true)。然后(
功能(结果)
{
console.log('success:'+结果);
},
函数(错误)
{
log('error:'+JSON.stringify(error));
},职能(进度){
$timeout(函数(){
$scope.downloadProgress=(progress.loaded/progress.total)*100;
});
},假);
$scope.clipSrc=$sce.trustAsResourceUrl(视频数据[0]。完整路径);
//$scope.videoSrc=videoData[0]。完整路径;
},函数(err){
警报('Err:
'+JSON.stringify(videoData)); }); //根据文件名删除文件。 $scope.deleteVideo=函数(){ $cordovaFile.removeFile(cordova.file.externalDataDirectory,“my video.mp4”) .然后(函数(结果){ log('Success:删除视频数据文件'+JSON.stringify(结果)); },函数(err){ log('错误:删除视频数据文件'+JSON.stringify(err)); }); } })
此解决方案仍然有效吗?我也有同样的问题,使用你的代码,它似乎成功地删除了文件,但它仍然出现在我的图库中。如果您只是将文件复制到另一个位置并将其删除,那么原始文件不会仍然存在并上载到图库?@MatTaNg,我面临的问题是无法从项目本身删除文件。文件仍然保留在库中,但我正在引用cordova目录中的文件来显示和删除。所以,当用户进入gallery并删除它时,它仍然保留在项目中哦,好吧,我不熟悉cordova文件插件。我可以使用removeFile功能删除我的问题库中的视频吗?@MatTaNg,不,你不能,伙计。自4.4版起,我们无法从MICRO SD卡中删除和写入文件。它现在是只读的。这就是为什么你需要复制项目中的文件。无论如何,我会将视频上传到数据库中,但我不希望我的用户在他们的图库中有一堆10秒的视频剪辑。无法阻止视频保存到库中,也无法在视频保存到库中后将其从库中删除?
.controller('yourCtrl', function($scope,$cordovaCapture,$sce,$cordovaFile, $cordovaFileTransfer, $timeout) {
       $cordovaCapture.captureVideo(options).then(function(videoData) {
            console.log(JSON.stringify(videoData[0]));
            console.log(cordova.file.externalDataDirectory);
             $cordovaFileTransfer.download(videoData[0].fullPath, cordova.file.externalDataDirectory + 'my-video.mp4', {}, true).then(
                                function(result)
                                {
                                    console.log('success: '+ result);
                                },
                                function (error)
                                {
                                    console.log('error: '+ JSON.stringify(error));
                                },function (progress) {
                                    $timeout(function () {
                                      $scope.downloadProgress = (progress.loaded / progress.total) * 100;
                                    });
                                  },false);
               $scope.clipSrc = $sce.trustAsResourceUrl(videoData[0].fullPath);
               //$scope.videoSrc = videoData[0].fullPath;
        }, function(err) {
          alert('Err: <br />'+ JSON.stringify(videoData));
        });

  //delete the file according to filename.

    $scope.deleteVideo= function(){
        $cordovaFile.removeFile(cordova.file.externalDataDirectory, "my-video.mp4")
          .then(function (result) {
            console.log('Success: deleting videoData file' + JSON.stringify(result));
          }, function (err) {
            console.log('Error: deleting videoData file' + JSON.stringify(err));
          });
      }

})