使用 jquery 文件上传验证文件?
Validate files using jquery file upload?
我正在使用 jquery 文件上传,如下所示。
dialogElem.find('#upload-image-file-input').fileupload({
url: url,
dataType: 'json',
autoUpload: true,
acceptFileTypes: /(\.|\/)(gif|jpe?g|png)$/i,
maxFileSize: 5000000, // 5 MB
// Enable image resizing, except for Android and Opera,
// which actually support image resizing, but fail to
// send Blob objects via XHR requests:
disableImageResize: /Android(?!.*Chrome)|Opera/
.test(window.navigator.userAgent),
previewMaxWidth: 100,
previewMaxHeight: 100,
previewCrop: true
}).on('fileuploadadd', function (e, data) {
var fileCount = data.originalFiles.length;
if (fileCount > 5) {
alert("The max number of files is : "+5);
return false;
}
}).on('fileuploadprocessalways', function (e, data) {
//some logic
}).on('fileuploadprogress', function (e, data) {
//some logic
}).on('fileuploaddone', function (e, data) {
//some logic
}).on('fileuploadfail', function (e, data) {
//some logic
})
在 fileuploadadd
我添加了一些验证逻辑。如果验证失败,如何停止所有其他事件,如 fileuploadprogress
、fileuploadfail
和 fileuploadprocessalways
?
如果你有一些像我几周前那样的任务 - 试试这个:
您可以通过中止 XHR(ajax 请求)调用来取消正在进行的上传。
您可以绑定到文件输入字段的 fileuploadadd 事件,在保留 jqXHR 对象的同时提交请求并将其用于中止:
jqXHR.abort();
例如:
$(".cloudinary-fileupload").bind('fileuploadadd', function(e, data) {
jqXHR = data.submit(); // Catching the upload process of every file
});
$('#cancel_button').click(function (e) {
if (jqXHR) {
jqXHR.abort();
jqXHR = null;
console.log("Canceled");
}
return false;
});
以下页面包含更多代码示例
https://github.com/blueimp/jQuery-File-Upload/issues/290
只要打电话
if (fileCount > 5) {
jqXHR.abort();
jqXHR = null; }
jqXHR.abort() 对我不起作用。但是 throw 中止 "add" 处理:
.bind('fileuploadadd', function (e, data) {
if (total_uploads >= maxImagesPerPost){
throw new Error('Upload maximum reached');
}
我正在使用 jquery 文件上传,如下所示。
dialogElem.find('#upload-image-file-input').fileupload({
url: url,
dataType: 'json',
autoUpload: true,
acceptFileTypes: /(\.|\/)(gif|jpe?g|png)$/i,
maxFileSize: 5000000, // 5 MB
// Enable image resizing, except for Android and Opera,
// which actually support image resizing, but fail to
// send Blob objects via XHR requests:
disableImageResize: /Android(?!.*Chrome)|Opera/
.test(window.navigator.userAgent),
previewMaxWidth: 100,
previewMaxHeight: 100,
previewCrop: true
}).on('fileuploadadd', function (e, data) {
var fileCount = data.originalFiles.length;
if (fileCount > 5) {
alert("The max number of files is : "+5);
return false;
}
}).on('fileuploadprocessalways', function (e, data) {
//some logic
}).on('fileuploadprogress', function (e, data) {
//some logic
}).on('fileuploaddone', function (e, data) {
//some logic
}).on('fileuploadfail', function (e, data) {
//some logic
})
在 fileuploadadd
我添加了一些验证逻辑。如果验证失败,如何停止所有其他事件,如 fileuploadprogress
、fileuploadfail
和 fileuploadprocessalways
?
如果你有一些像我几周前那样的任务 - 试试这个:
您可以通过中止 XHR(ajax 请求)调用来取消正在进行的上传。 您可以绑定到文件输入字段的 fileuploadadd 事件,在保留 jqXHR 对象的同时提交请求并将其用于中止:
jqXHR.abort();
例如:
$(".cloudinary-fileupload").bind('fileuploadadd', function(e, data) {
jqXHR = data.submit(); // Catching the upload process of every file
});
$('#cancel_button').click(function (e) {
if (jqXHR) {
jqXHR.abort();
jqXHR = null;
console.log("Canceled");
}
return false;
});
以下页面包含更多代码示例 https://github.com/blueimp/jQuery-File-Upload/issues/290
只要打电话
if (fileCount > 5) {
jqXHR.abort();
jqXHR = null; }
jqXHR.abort() 对我不起作用。但是 throw 中止 "add" 处理:
.bind('fileuploadadd', function (e, data) {
if (total_uploads >= maxImagesPerPost){
throw new Error('Upload maximum reached');
}