使用org.apache.cordova.file获取选定的文件大小

时间:2015-09-30 05:56:59

标签: angularjs cordova ionic-framework ionic cordova-plugins

使用org.apache.cordova.file插件我可以选择该文件,然后获取文件的本机路径。之后,我必须限制用户根据文件大小选择文件。但我无法获得文件大小。我的问题是我无法使用该插件获取文件大小。为此我使用this tutorial.

3 个答案:

答案 0 :(得分:4)

要获取文件大小,您需要通过元数据访问它,如下所示:

            window.resolveLocalFileSystemURL(filePath, 
                function (fileSystem) {
                    fileSystem.getFile(fileName, {create: false}, 
                        function (fileEntry) {
                            fileEntry.getMetadata(
                                function (metadata) {
                                    alert(metadata.size); // get file size
                                }, 
                                function (error) {}
                            );
                        }, 
                        function (error) {}
                    );
                }, 
                function (error) {} 
            );     

答案 1 :(得分:3)

此代码更紧凑,因为您不需要调用getMetadata函数,size已经是fileEntry的属性

function gotPhoto(imageUri) {
    window.resolveLocalFileSystemURI(imageUri, 
        function(fileEntry) {
            fileEntry.file(function(fileObj) {
                console.log("Size = " + fileObj.size);
            },
            function (error) {});
        }, function (error) {}
    );
}

答案 2 :(得分:1)

不推荐使用函数ref = FIRDatabase.database().reference() ref.child("rooms/room1").observeSingleEvent(of: .value, with: { (snapshot) in if snapshot.exists(){ print("true rooms exist") }else{ print("false room doesn't exist") } }) ,此外,您可能需要具有特定的专用透明函数。

因此您可以声明此功能。

window.resolveLocalFileSystemURI

然后只是像这样使用它

function getFileSize(fileUri) {
    return new Promise(function(resolve, reject) {    
        window.resolveLocalFileSystemURL(fileUri, function(fileEntry) {
            fileEntry.file(function(fileObj) {
                resolve(fileObj.size);
            },
            function(err){
                reject(err);
            });
        }, 
        function(err){
            reject(err);
        });
    });
}