gpt4 book ai didi

javascript - 如何使用 javascript 和 jquery-file-upload 检测损坏的非常大的图像文件?

转载 作者:行者123 更新时间:2023-11-30 10:26:48 25 4
gpt4 key购买 nike

我在 Rails 应用程序中使用 jquery-file-upload,我需要防止上传损坏的图像,因为用户试图上传具有有效文件扩展名的损坏图像文件。

想使用 javascrpt 验证客户端,以避免在服务器上验证超过 50 MB 的大文件时的长时间延迟。

我可以检查文件类型,但我如何使用 jquery/native javascript/jquery-file-upload 可靠地验证非常大的有效且未损坏的 jpg 或 tif 图像?

$('form[id*=photo]').fileupload({
dataType: 'script',
pasteZone: null,
sequentialUploads: true,
formData: {fileupload: 'ajax'},
add: function(e, data) {
if($('#photo_id').val() == ""){
data.type = 'POST';
}else{
data.type = 'PUT';
data.url = "/photos/" + $('#photo_id').val();
}
if(this.id != "new_photo"){
data.type = 'PUT';
}
types = /(\.|\/)(jpe?g|tif|tiff)$/i;
file = data.files[0];
if( types.test(file.type) || types.test(file.name) ) {
data.context = $(tmpl("template-upload", file));
$('.upload').remove();
$('#progbar').append(data.context);
$('#control-group-progress').show();
data.submit();
} else {
alert("We're sorry but the file " + file.name + " is not in a supported tiff or jpg image file format. Please select a jpeg (jpg) or tiff file. Thanks!");
}
},
progress: function(e, data) {
if(data.context) {
progress = parseInt(data.loaded / data.total * 100, 10);
progress = parseInt(progress * 0.9, 10);
data.context.find('.bar').css('width', progress + '%');
data.context.find('.progress_percent').html(progress + "%");
}
},
always: function(e, data) {
data.context.find('.bar').css('width', '100%');
data.context.find('.progress_percent').html("100%");
}
});

最佳答案

您可以尝试使用以下 JavaScript 代码来验证文件类型和文件大小

var uploadedImgType = $('#photo_id').val();
file = data.files[0];
if(uploadedImgType.match(/(?:jpeg|jpg|tif|tiff)$/) && (file.size/1000/1000 < 50)){
(Do your Stuff);
}else{
alert("We're sorry but the file " + file.name + " is not in a supported tiff or jpg image file format. Please select a jpeg (jpg) or tiff file. Thanks!");
}

file.size/1000/1000 < 50 将检查上传的文件是否小于 50MB。

关于javascript - 如何使用 javascript 和 jquery-file-upload 检测损坏的非常大的图像文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19232837/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com