มีปัญหาเดียวกันและ blueimp guy กล่าวว่า " maxFileSize และ acceptFileTypes รองรับเฉพาะเวอร์ชัน UI เท่านั้น " และได้ให้ลิงก์ (เสีย) เพื่อรวมเมธอด _validate และ _hasError
ดังนั้นโดยไม่ทราบวิธีรวมวิธีการเหล่านั้นโดยไม่ทำให้สคริปต์สับสนฉันจึงเขียนฟังก์ชั่นเล็ก ๆ นี้ ดูเหมือนว่าจะได้ผลสำหรับฉัน
เพียงแค่เพิ่มสิ่งนี้
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();
}
},
ที่จุดเริ่มต้นของตัวเลือก. fileupload ดังที่แสดงในโค้ดของคุณที่นี่
$(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 + '%');
}
});
});
คุณจะสังเกตเห็นว่าฉันได้เพิ่มฟังก์ชั่นขนาดไฟล์ไว้ในนั้นด้วยเพราะมันจะใช้ได้เฉพาะในเวอร์ชัน UI เท่านั้น
อัปเดตเพื่อรับปัญหาในอดีตที่แนะนำโดย @lopsided: เพิ่มdata.originalFiles[0]['type'].length
และdata.originalFiles[0]['size'].length
ในแบบสอบถามเพื่อให้แน่ใจว่ามีอยู่และไม่ว่างเปล่าก่อนที่จะทดสอบข้อผิดพลาด หากไม่มีอยู่จะไม่มีการแสดงข้อผิดพลาดและจะอาศัยการทดสอบข้อผิดพลาดฝั่งเซิร์ฟเวอร์ของคุณเท่านั้น