Hatte das gleiche Problem und der Blueimp-Typ sagt " maxFileSize und acceptFileTypes werden nur von der UI-Version unterstützt " und hat einen (defekten) Link bereitgestellt, um die Methoden _validate und _hasError einzubeziehen.
Ohne zu wissen, wie man diese Methoden einbindet, ohne das Skript durcheinander zu bringen, habe ich diese kleine Funktion geschrieben. Es scheint für mich zu funktionieren.
Fügen Sie dies einfach hinzu
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();
}
},
zu Beginn der .fileupload-Optionen, wie in Ihrem Code hier gezeigt
$(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,
// acceptFileTypes: /(\.|\/)(gif|jpe?g|png)$/i,
// maxFileSize: 5000000,
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 + '%');
}
});
});
Sie werden feststellen, dass ich dort auch eine Dateigrößenfunktion hinzugefügt habe, da dies auch nur in der UI-Version funktioniert.
Aktualisiert, um das von @lopsided vorgeschlagene Problem der Vergangenheit zu erhalten: Hinzugefügt data.originalFiles[0]['type'].length
und data.originalFiles[0]['size'].length
in den Abfragen, um sicherzustellen, dass sie vorhanden sind und nicht zuerst leer sind, bevor auf Fehler getestet wird. Wenn sie nicht vorhanden sind, wird kein Fehler angezeigt und es wird nur auf Ihren serverseitigen Fehlertest zurückgegriffen.