J'ai eu le même problème, et le gars de blueimp dit que " maxFileSize et acceptFileTypes ne sont supportés que par la version de l'interface utilisateur " et a fourni un lien (cassé) pour incorporer les méthodes _validate et _hasError.
Alors sans savoir comment incorporer ces méthodes sans gâcher le script, j'ai écrit cette petite fonction. Il semble fonctionner pour moi.
Ajoutez simplement ceci
add: function(e, data) {
var uploadErrors = [];
var acceptFileTypes = /^image\/(gif|jpe?g|png)$/i;
if(data.originalFiles[0]['type'].length && !acceptFileTypes.test(data.originalFiles[0]['type'])) {
uploadErrors.push('Not an accepted file type');
}
if(data.originalFiles[0]['size'].length && data.originalFiles[0]['size'] > 5000000) {
uploadErrors.push('Filesize is too big');
}
if(uploadErrors.length > 0) {
alert(uploadErrors.join("\n"));
} else {
data.submit();
}
},
au début des options .fileupload comme indiqué dans votre code ici
$(document).ready(function () {
'use strict';
$('#fileupload').fileupload({
add: function(e, data) {
var uploadErrors = [];
var acceptFileTypes = /^image\/(gif|jpe?g|png)$/i;
if(data.originalFiles[0]['type'].length && !acceptFileTypes.test(data.originalFiles[0]['type'])) {
uploadErrors.push('Not an accepted file type');
}
if(data.originalFiles[0]['size'].length && data.originalFiles[0]['size'] > 5000000) {
uploadErrors.push('Filesize is too big');
}
if(uploadErrors.length > 0) {
alert(uploadErrors.join("\n"));
} else {
data.submit();
}
},
dataType: 'json',
autoUpload: false,
done: function (e, data) {
$.each(data.result.files, function (index, file) {
$('<p style="color: green;">' + file.name + '<i class="elusive-ok" style="padding-left:10px;"/> - Type: ' + file.type + ' - Size: ' + file.size + ' byte</p>')
.appendTo('#div_files');
});
},
fail: function (e, data) {
$.each(data.messages, function (index, error) {
$('<p style="color: red;">Upload file error: ' + error + '<i class="elusive-remove" style="padding-left:10px;"/></p>')
.appendTo('#div_files');
});
},
progressall: function (e, data) {
var progress = parseInt(data.loaded / data.total * 100, 10);
$('#progress .bar').css('width', progress + '%');
}
});
});
Vous remarquerez que j'ai également ajouté une fonction de taille de fichier, car cela ne fonctionnera également que dans la version de l'interface utilisateur.
Mise à jour pour surmonter le problème suggéré par @lopsided: Ajouté data.originalFiles[0]['type'].length
et data.originalFiles[0]['size'].length
dans les requêtes pour s'assurer qu'ils existent et ne sont pas vides avant de tester les erreurs. S'ils n'existent pas, aucune erreur ne sera affichée et ne reposera que sur les tests d'erreur côté serveur.