如何计算在 dropzone 中上传的所有文件大小?
How to calculate all files size uploaded in dropzone?
我想计算在 dropzone 中上传的所有选定文件的总大小。
例如:如果我选择了 5 个文件,每个文件大小为 2mb,那么
它应该 return 10mb 总大小
我想限制所有文件的总大小是否大于限制。
谁能帮我解决这个问题,我真的很困惑。
首先获取上传成功的文件,然后遍历它们并获取大小。
如果总数超过特定限制,您可以在 dropzone 上调用 disable()。
var files = dropzoneElement.getFilesWithStatus(Dropzone.SUCCESS), total=0;
$.each(files, function(file){
total+=file.size;
});
alert(total);
您可能需要此功能的完整版本。
var myDropzone = new Dropzone("#my-dropzone");
var totalSizeLimit = 300*1024*1024; //300MB
myDropzone.on("uploadprogress", function(file, progress, bytesSent) {
var alreadyUploadedTotalSize = getTotalPreviousUploadedFilesSize();
if((alreadyUploadedTotalSize + bytesSent) > totalSizeLimit){
this.disable();
}
});
function getTotalPreviousUploadedFilesSize(){
var totalSize = 0;
myDropzone.getFilesWithStatus(Dropzone.SUCCESS).forEach(function(file){
totalSize = totalSize + file.size;
});
return totalSize;
}
如果你设置uploadMultiple: true
,下面的方法只在文件丢失时运行一次,不管有多少文件。使用 sendingmultiple
是一个小的优化,因为它只为每个队列运行一次,而不是为每个文件运行一次。
init: function() {
this.on("sendingmultiple", function(file) {
var uploaded_size = 0;
$.each(file, function(k, v) {
uploaded_size += v.size;
});
if (uploaded_size > 10240000) {
alert('Total size of all files: ' + uploaded_size);
this.disable(); // disable current upload
this.enable(); // enable drop zone again
}
});
}
我想计算在 dropzone 中上传的所有选定文件的总大小。
例如:如果我选择了 5 个文件,每个文件大小为 2mb,那么 它应该 return 10mb 总大小
我想限制所有文件的总大小是否大于限制。
谁能帮我解决这个问题,我真的很困惑。
首先获取上传成功的文件,然后遍历它们并获取大小。 如果总数超过特定限制,您可以在 dropzone 上调用 disable()。
var files = dropzoneElement.getFilesWithStatus(Dropzone.SUCCESS), total=0;
$.each(files, function(file){
total+=file.size;
});
alert(total);
您可能需要此功能的完整版本。
var myDropzone = new Dropzone("#my-dropzone");
var totalSizeLimit = 300*1024*1024; //300MB
myDropzone.on("uploadprogress", function(file, progress, bytesSent) {
var alreadyUploadedTotalSize = getTotalPreviousUploadedFilesSize();
if((alreadyUploadedTotalSize + bytesSent) > totalSizeLimit){
this.disable();
}
});
function getTotalPreviousUploadedFilesSize(){
var totalSize = 0;
myDropzone.getFilesWithStatus(Dropzone.SUCCESS).forEach(function(file){
totalSize = totalSize + file.size;
});
return totalSize;
}
如果你设置uploadMultiple: true
,下面的方法只在文件丢失时运行一次,不管有多少文件。使用 sendingmultiple
是一个小的优化,因为它只为每个队列运行一次,而不是为每个文件运行一次。
init: function() {
this.on("sendingmultiple", function(file) {
var uploaded_size = 0;
$.each(file, function(k, v) {
uploaded_size += v.size;
});
if (uploaded_size > 10240000) {
alert('Total size of all files: ' + uploaded_size);
this.disable(); // disable current upload
this.enable(); // enable drop zone again
}
});
}