Rails アプリで jquery-file-upload を使用していますが、ユーザーが有効なファイル拡張子を持つ破損した画像ファイルをアップロードしようとしているため、破損した画像がアップロードされないようにする必要があります。
50 MB を超える大きなファイルを含むサーバーでの検証の長い遅延を回避するために、javascrpt を使用してクライアント側を検証したいと考えています。
ファイルの種類を確認できますが、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%");
}
});