2017-11-09 9 views
1

私は、フォームを送信する前に画像をアップロードする必要があるプロジェクトに取り組んでいます。現在のところ私のコードは動作していますが、自分のプロジェクトでは必要ない任意のフォーマットサイズを選択していますので、私の目標は、jpg、jpeg、pngなどの定義済みのイメージファイルフォーマットのみを選択するようにユーザを制限することですjpg、png、jpegファイルを選択します。ここでajaxアップロードでのみ画像を許可する

は私の作業コードです:

$(document).on('submit', '#multi-cropper', function(e){ 
$('#cropModal').modal('hide'); 
e.preventDefault(); 

$('#loadingBarModal').modal({ 
    backdrop: 'static', 
    keyboard: false 
}); 

$.ajax({ 

    xhr: function() { 
     var xhr = new window.XMLHttpRequest(); 
     xhr.upload.addEventListener("progress", function(evt) { 
      if (evt.lengthComputable) { 
       var percentComplete = evt.loaded/evt.total; 
       percentComplete = percentComplete*100; 
       $('.myprogress-bar').css('width', 
       Math.ceil(percentComplete)+'%'); 
       $('.myprogress-bar').html(Math.ceil(percentComplete)+'%'); 
      } 
     }, false); 

     xhr.addEventListener("progress", function(evt) { 
      if (evt.lengthComputable) { 
       var percentComplete = evt.loaded/evt.total; 
       percentComplete = percentComplete*100; 

       $('.myprogress-bar').css('width', 
      Math.ceil(percentComplete)+'%'); 
       $('.myprogress-bar').html(Math.ceil(percentComplete)+'%'); 
      } 
     }, false); 

     return xhr; 
    }, 

     url: '<?php echo base_url(); ?>/user/crop_image', 
     data: new FormData(this), 
     contentType: false, 
    processData: false, 
    type: 'POST', 
    dataType:"json", 

    success: function(data){ 
     $('#loadingBarModal').modal('hide'); 
     $('.myprogress-bar').css('width', '0%'); 



        if(data.status == 1){ 
      $('.preview-image-'+action_image_id).attr('src', '<?php echo 
      base_url(); ?>uploads/'+data.base_name); 
      $('.prev'+action_image_id).show(); 
      $('.preview-image- 
      '+action_image_id).addClass('preview_this_image'); 
      $('#image-src-'+action_image_id).val(data.base_name); 
      action_image_id = 0; 
      //$('#delete_this'+action_image_id).show(); 
     } 

     $.unblockUI(); 
     reload_div(); 
      } 
     }); 
     }); 



function reload_div(){ 


    $.post('<?php echo base_url(); ?>user/get_modal', {}, function(data){ 
     $('.temprary-data').html(data); 
    }); 
} 
reload_div(); 
+0

は、この[クラス](https://github.com/shubhamoy/をチェックする前に、画像の種類を確認することができるよりphotolia/blob/master/includes/Pics.php)私はMIMEタイプチェックを扱うホビープロジェクトのために書いた。必要に応じて実装してください。 – Shubhamoy

答えて

0

アップロード

var ext = $('[name="image_url"]').val().split('.').pop().toLowerCase(); 
            if($.inArray(ext, ['gif','png','jpg','jpeg']) == -1) { 
             alert('invalid extension!'); 
             blah = 1; 
             return false; 
            } else { 
             valid_frm = 1; 
            } 
+0

それは働いていません。 –

+0

これは、ファイルの拡張子のみをチェックします。ファイルが悪意のある可能性があり、単に 'jpg'拡張子で保存されている可能性があります。 MIMEタイプをチェックするほうがはるかに優れています。 –

+0

私のコード私がイメージを選択した場合、モーダルで最初に表示されます。イメージを選択しないと、そのイメージの代替テキストが表示されます。また、モーダルはアップロードボタンを表示します。ボタンが表示されているときにボタンを非表示にすることはできますか? –

関連する問題