猿问

如何计算上传的所有文件的总大小

我正在使用以下先前的 SO 问题来指导我。但是,我在控制台日志中得到 NaN 而不是总文件大小。


有没有人看到我做错了什么?


var dropFileSizes = acceptedFiles, dropTotal=0;

$.each(dropFileSizes, function(file){

    dropTotal+=file.size;

});

console.log(dropTotal);

完整代码:


function toggleUploadButton() {

    acceptedFiles = myDropzone.getAcceptedFiles();

    queuedFiles = myDropzone.getQueuedFiles();

    rejectedFiles = myDropzone.getRejectedFiles();

    allAcceptFiles = acceptedFiles.values();


    var dropFileSizes = acceptedFiles, dropTotal=0;

    $.each(dropFileSizes, function(file){

        dropTotal+=file.size;

    });

    console.log(dropTotal);

}

试图获得toggleUploadButton函数之外的总数:


var dropTotal = 0;

var dropFileSizes = acceptedFiles;

function toggleUploadButton() {

    acceptedFiles = myDropzone.getAcceptedFiles();

    allAcceptFiles = acceptedFiles.values();

    $.each(dropFileSizes, function(file){

        dropTotal+= (dropFileSizes[file].size || 0);

    });

}

console.log(dropTotal);


隔江千里
浏览 327回答 1
1回答

www说

更新你需要使用 dropTotal+=dropFileSizes[file].size;如果您想查看工作示例,请查看此小提琴dropFileSizes是一个对象,而不是一个数组,所以你需要使用里面的文件变量$.each作为索引并相应地访问文件dropFileSizes[file].size;或者如果你想在同一个地方的文件,你需要把key成$.each如下 $.each(dropFileSizes, function(key, file){        dropTotal+=file.size;           });小提琴但是,请考虑未定义和空值的可能性试试这个方法$.each(dropFileSizes, function(file){    dropTotal+= (dropFileSizes[file].size || 0);    // or  dropTotal+=(file.size || ) if you are using function(key, file){};  });在您的代码中,如果 dropFileSizes[file].size包含数字数学运算以外的其他内容将失败,这将导致NaN您dropTotal将成为NaN;如果你使用dropTotal+= (dropFileSizes[file].size || 0);它会使用 0 代替如果其他东西,例如null或undefined遇到并dropTotal在函数之外获取的值您需要确保,该语句console.log(dropTotal);在调用后执行toggleUploadButton()
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答