【问题标题】:Only allow image on ajax upload [duplicate]仅允许 ajax 上传图片[重复]
【发布时间】:2018-04-22 08:37:49
【问题描述】:

我正在处理一个用户必须在提交表单之前上传图片的项目。目前我的代码正在运行,但它正在选择我的项目中不需要的任何格式大小,所以我的目标是限制用户只选择我希望用户只选择定义的图像文件格式,例如 jpg、jpeg 和 png选择 jpg、png 和 jpeg 文件。

这是我的工作代码:

$(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();

【问题讨论】:

  • 检查这个class 我为一个处理 MIME 类型检查的业余项目写的。尝试根据您的需要实施它。

标签: javascript php jquery ajax


【解决方案1】:

您可以在上传前检查图片类型

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;
                                    }

【讨论】:

  • 它不工作。
  • 这仅检查文件扩展名。该文件可能是恶意的,并且只是以jpg 扩展名保存。检查 MIME 类型要好得多。
  • 在我的代码上如果我选择图像,它首先在模态中显示,如果我不选择图像,它会显示图像替代文本。模态还显示上传按钮。显示替代文本时是否可以隐藏按钮
  • 我使用图像代码:
猜你喜欢
  • 2017-05-21
  • 2021-11-15
  • 1970-01-01
  • 1970-01-01
  • 2023-03-12
  • 2019-09-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-05
相关资源
最近更新 更多