the validation happens client side. Not in the file you mention above.
Below is a sample to make the fileupload widget required, you can use the same.
(function(document, $, Granite) {
"use strict";
var CLASS = ".coral-FileUpload-input",
DATA_VALIDATION_VALUE = "fileupload-required",
fieldErrorEl = $("<span class='coral-Form-fielderror coral-Icon coral-Icon--alert coral-Icon--sizeS' data-init='quicktip' data-quicktip-type='error' />");
// check for coral-id of tab, see if it's hidden, then pass the validation .
// if dialog doesn't have tab, do regular validation
function validateFileUpload(e) {
var valid = true,
validationRequired = true,
validation = $(e).data('validation'),
message = $(e).data('error-msg'),
tabpanel = $(e).closest('section.coral-TabPanel-pane');
if(typeof tabpanel !== "undefined"){
var dialogPanel = $(tabpanel).closest("div.coral-TabPanel");
var id = $(tabpanel).attr("id");
var isHidden = $(tabpanel).attr("aria-hidden");
if(typeof dialogPanel !== "undefined"){
var thisPanel = $(dialogPanel).find("[aria-controls='"+ id +"']");
if(typeof thisPanel !== "undefined" && $(thisPanel).hasClass("hide")){
validationRequired = false;
}
}
}
if (validationRequired && validation && validation.indexOf(DATA_VALIDATION_VALUE) >= 0) {
valid = $(e).closest('.coral-FileUpload').hasClass('is-filled');
if (valid) {
clearError(e);
} else {
showError(e, message);
}
}
return valid;
}
function clearError(el) {
var fieldSet = $(el).closest('.coral-Form-fieldwrapper'),
field = el.closest(".coral-Form-field");
fieldSet.removeAttr("aria-invalid").removeClass("is-invalid");
fieldSet.find(".coral-Form-fielderror").remove();
}
function showError(el, message) {
var fieldSet = $(el).closest('.coral-Form-fieldwrapper'),
field = el.closest(".coral-Form-field"),
error = fieldSet.find(".coral-Form-fielderror"),
arrow = "right";
fieldSet.attr("aria-invalid", "true").toggleClass("is-invalid", true);
if (error.length === 0) {
fieldSet.css('position', 'relative');
fieldErrorEl.clone()
.attr("data-quicktip-arrow", arrow)
.attr("data-quicktip-content", message)
.css('position','absolute')
.css('top','px')
.css('right','190px')
.insertAfter(field);
}
el.blur();
}
$(document).on('click', ".cq-dialog-submit", function(e) {
var fileUploads = $(this).parents('form').find(CLASS);
fileUploads.each(function(){
if (!validateFileUpload(this)) {
e.stopPropagation();
e.preventDefault();
}
})
});
$(document).on('change', '.coral-FileUpload', function(e) {
validateFileUpload($(this).find(CLASS));
});
})(document, Granite.$, Granite);