1

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%");
  }
}); 
4

2 に答える 2

4

ファイルの種類とファイルのサイズを確認するには、次の 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 未満かどうかを確認します。

于 2014-03-13T07:31:44.120 に答える