为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

隔江千里 2021-12-12 10:39:57
我正在使用以下先前的 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);
查看完整描述

1 回答

?
www说

TA贡献1775条经验 获得超8个赞

更新


你需要使用


 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()


查看完整回答
反对 回复 2021-12-12
  • 1 回答
  • 0 关注
  • 326 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号