如何计算所有上传文件的总大小
How to calculate the total sizes for all files uploaded
我正在使用以下之前的 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);
已更新
你需要使用
dropTotal+=dropFileSizes[file].size;
如果您想查看工作示例,请查看 this fiddle
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);
,如果遇到诸如 null
或 undefined
之类的其他内容,它将使用 0 代替
并在函数外获取 dropTotal
的值
您需要确保在调用 toggleUploadButton()
之后执行语句 console.log(dropTotal);
我正在使用以下之前的 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);
已更新
你需要使用
dropTotal+=dropFileSizes[file].size;
如果您想查看工作示例,请查看 this fiddle
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);
,如果遇到诸如 null
或 undefined
之类的其他内容,它将使用 0 代替
并在函数外获取 dropTotal
的值
您需要确保在调用 toggleUploadButton()
console.log(dropTotal);