我有一个带有两个参数的函数:entry,一个文件条目(来自拖放源)和fileName,所述文件的名称。
我不确定这是否有帮助,但条目被声明为:
var entry = evt.dataTransfer.items[i].webkitGetAsEntry();
我想创建一个描述有关此条目的信息的数组,该数组包括文件名、文件大小、以不同单位表示的文件大小以及用于表示所述文件的单位。我在两个不同的点将数组打印到控制台,一次是在 .file 方法内部(如果我使用了不正确的术语,我深表歉意),一次是在外部。当数组在 .file 方法之外时,控制台不会打印数组的值。
我能否就如何解决这个问题以及为什么会发生这种情况寻求帮助?我在 .file 方法之外声明了我的变量,所以我认为我的变量范围是正确的,但显然事实并非如此。
这是我的功能:
function getFileSize(entry,fileName)
{
var fileData = [];
var i = 0;
var byteSize = ['B','kB','MB','GB','TB'];
fileData.push(fileName);
entry.file(function(file)
{
var fsize = file.size;
var i = 0;
fileData.push(fsize);
while(fsize > 1024)
{
fsize = (fsize / 1024);
i++;
}
fileData.push(fsize.toFixed(2));
fileData.push(byteSize[i]);
console.log(fileData);
});
console.log(fileData);
}