У меня есть функция, которая принимает два аргумента: entry, запись файла (из источника перетаскивания) и fileName, имя указанного файла.
Я не уверен, поможет ли это, но entry объявляется как:
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);
}