Flowjs文件上传 - Ionic和ngCordova

时间:2015-06-22 09:16:16

标签: javascript ionic file-transfer ngcordova flow-js

我试图将图片从我的应用上传到服务器,我想使用ngCordova文件传输插件,但我对这个插件给你的进展信息不满意,所以我决定与Flowjs一起使用,但我无法从我拥有的文件网址创建一个正确的HTML5文件对象。 这是我的代码

window.resolveLocalFileSystemURL(photo, function(fileEntry){
    fileEntry.file(function(file){
        $scope.flow.addFile(file);
        $scope.flow.upload();
        $scope.flow.on('fileProgress', function (file, chunk){
            console.log(file);
            console.log(chunk);
        });
        $scope.flow.on('error', function(a,b){
            console.log(a);
            console.log(b);
        });
    });
    }, function(err){
        console.log(err);
});

其中photo是文件的fileSystem的路径。 当我尝试执行此上传时,我收到400(错误的请求)错误,我确定服务器端是正确的,因为我将它与许多其他Flowjs应用程序一起使用。 我认为fileEntry.file()返回的对象不是一个合适的HTML5文件对象,也许从文件url创建一个Blob可以解决问题,但我还不知道如何创建它。 在尝试创建Blob之前,我想让我的代码工作,但如果这是唯一的解决方案,那么......

1 个答案:

答案 0 :(得分:0)

好的,我找到了一个有效的解决方案,如果它是最好的可能性,那么任何改进都会得到很好的体现。

window.resolveLocalFileSystemURL(photo, function(fileEntry){
    fileEntry.file(function(file){
        var reader = new FileReader();
        reader.onload = function(){
            var blob = new Blob([reader.result], {type: 'application/octet-stream'});
            blob.name = 'image.jpg';
            $scope.flow.addFile(blob);
            $scope.flow.upload();
            $scope.flow.on('fileProgress', function (file, chunk){
                console.log(file);
                console.log(chunk);
            });
            $scope.flow.on('error', function(a,b){
                console.log(a);
                console.log(b);
            });
        };
        reader.readAsArrayBuffer(file);
    });
}, function(err){
    console.log(err);
});