I have a page where a user can upload a document. There is also a button to add more documents (as seen per image).
I want to check as each file that has been added or removed from the upload section to make sure that the size does not exceed 10 MB.
So if a user uploads 3 separate files of 2 MB and then adds a file which is 5 MB, the submit button will disable until one of the files are removed because it has gone over the 10 MB limit.
The rows can be added dynamically, so I was doing it by class and trying to sum the running total.
Here is what I have so far, available at JFIDDLE
<form class="upload-form">
<input class='upload-file' type="file" id="upload0">
<input class='upload-file' type="file" id="upload1">
<input class='upload-file' type="file" id="upload2">
<input class='upload-file' type="file" id="upload3">
<input id='submitBtn' type=submit>
</form>
The issue is, that if I add a file and then remove it, it does not reflect the current running total.
$("document").ready(function() {
var fileArr = [];
$(".upload-file").on('change',function() {
var fileInput = $('.upload-file');
var fileSize = fileInput.get(0).files[0].size;
fileArr.push(fileSize);
var totalSize = 0;
for (var i in fileArr) {
alert(fileArr[i]);
totalSize = totalSize + fileArr[i];
}
if (totalSize > 10485759) {
alert('Over Max Size');
$(submitBtn).prop("disabled",true);
}
});
});
I tried this way also, but could not reset when a file was removed.JFIDDLE-2
The logic in your code can be simplified by just incrementing a single counter within the each()
loop. You can then check the total once the loop has completed to see if the combined file size is valid. Try this:
$(".upload-file").on('change', function() {
var totalSize = 0;
$(".upload-file").each(function() {
for (var i = 0; i < this.files.length; i++) {
totalSize += this.files[i].size;
}
});
var valid = totalSize <= 10485759;
if (!valid)
alert('Over Max Size');
$("#submitBtn").prop("disabled", !valid);
});
Note that this method will also work with multiple
file inputs, as the jsFiddle below shows:
Updated fiddle
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With