zoukankan      html  css  js  c++  java
  • 图片异步上传,使用ajax上传图片

    1、使用插件plupload

    2、实现效果

    3、HTML

    1 <li>
    2     <div class="default" data-disabled="false"><img src="" class="upImage"></div>
    3     <input id="fileStorge2" value="" type="hidden" class="fileStorge">
    4     <input type="file" name="" value="" style="display: none;" class="fileUp" id="fileUp2" data-id="2">
    5 </li>

     4、JS

    //点击上传图片
    $('body').off('click','.default');
    $('body').on('click','.default', function () {
    
        var disabled = $(this).attr('data-disabled');
    
        if (disabled === "true") {
            return false;
        }else{
            $(this).siblings('.fileUp').trigger('click');
        }
    
    });
    
    //图片上传初始化函数
    function initImage(){
    
        $('.fileUp').each(function(index,ele){
            var id = $(this).attr('id'),
                indexNum = $(this).attr('data-id');
    
            initUpload(id, indexNum);
        });
    
    }
    
    //图片上传
    function initUpload(eleID, index) {
    
        var uploader = new plupload.Uploader({ //实例化一个plupload上传对象
            browse_button : document.getElementById(eleID),
            url : 'upload.html', //服务器端的上传页面地址
            flash_swf_url : 'Moxie.swf',
            silverlight_xap_url : 'Moxie.xap',
            multi_selection: false,//是否可以在文件浏览对话框中选择多个文件
            filters: {
              mime_types : [ //只允许上传图片文件
                { title : "图片文件", extensions : "jpg,gif,png" }
              ]
            }
        });
    
        uploader.init(); //初始化
    
        //绑定文件添加进队列事件
        uploader.bind('FilesAdded',function(uploader,files){
            for(var i = 0, len = files.length; i<len; i++){
                !function(i){
                    previewImage(files[i],function(imgsrc){
                        $('#'+eleID+'').siblings('.default').find('img').attr('src',imgsrc).show();
                        $('#fileStorge'+index).val(encodeURIComponent(imgsrc));
                    });
                }(i);
            }
        });
    
    }
    
    //图片上传预览
    function previewImage(file,callback){ 
    
        if(file.type=='image/gif'){ //gif使用FileReader进行预览,因为mOxie.Image只支持jpg和png
    
            var fr = new mOxie.FileReader();
    
            fr.onload = function(){
                callback(fr.result);
            }
    
            fr.readAsDataURL(file.getSource());
    
        }else{
    
            var preloader = new mOxie.Image();
    
            preloader.onload = function() {
                preloader.downsize( 300, 300 );//先压缩一下要预览的图片,宽300,高300
                var imgsrc = preloader.type=='image/jpeg' ? preloader.getAsDataURL('image/jpeg',80) : preloader.getAsDataURL(); //得到图片src,实质为一个base64编码的数据
                callback && callback(imgsrc); //callback传入的参数为预览图片的url
            };
            
            preloader.load( file.getSource() );
        }   
    }
  • 相关阅读:
    bzoj 1858 线段树
    bzoj 1877 最小费用流
    bzoj 1833 数位dp
    Codeforces Round #285 (Div. 1) B
    HDU2028 Lowest Common Multiple Plus
    HDU5706 GirlCat
    HDU2022 海选女主角
    687E: TOF
    687D: Dividing Kingdom II
    687D: Dividing Kingdom II
  • 原文地址:https://www.cnblogs.com/zhanghuiyun/p/6709596.html
Copyright © 2011-2022 走看看