html:

<input type="file"  onchange="upload(this.files)" class="upfile" id="upfile">

JS:

function upload(f){
            var str = "";
            if(f[0].type.split('/')[0]!='image') return window.showTips("请上传图片");
            var reader = new FileReader();
            reader.readAsDataURL(f[0]);
            reader.onerror = function(){
                console.log('error'); //文件读取出错的时候触发,暂模拟不出
            };
            reader.onload = function(e){
                console.log("上传成功");
                $('.J_img').attr('src',e.target.result);
                $('.J_photo').hide();
                $('.J_tit').show();
                
            }
        }

 解释:

var reader = new FileReader(); //新建FileReader对象
    reader.readAsDataURL(file); //读取为base64
    //以下代码可以删除
    reader.onloadstart = function(){
        console.log('start');  //开始读取
    };
    reader.onprogress = function(e){
        //这个是定时触发的事件,文件较大的时候较明显
        var p = '已完成:' + Math.round(e.loaded / e.total * 100) + '%' ;
        $(".file_upload").find(".progress").html(p);
        console.log('uploading');  //文件较大,就会出现多个uploading
    };
    reader.onabort = function(){
        console.log('abort'); //用作取消上传功能
    };
    reader.onerror = function(){
        console.log('error'); //文件读取出错的时候触发,暂模拟不出
    };
    reader.onload = function(){
        console.log('load complete'); //完成
    };

  

参考链接:http://blog.csdn.net/qingyjl/article/details/52003567

http://www.cnblogs.com/gxsyj/p/6089763.html

 

JS 对图片压缩后上传代码

/**
 * 图片压缩,默认同比例压缩
 * @param {Object} path    
 *         pc端传入的路径可以为相对路径,但是在移动端上必须传入的路径是照相图片储存的绝对路径
 * @param {Object} obj
 *         obj 对象 有 width, height, quality(0-1)
 * @param {Object} callback
 *         回调函数有一个参数,base64的字符串数据
 */
function dealImage(path, obj, callback){
    var img = new Image();
    img.src = path;
    img.onload = function(){
        var that = this;
        // 默认按比例压缩
        var w = that.width,
            h = that.height,
            scale = w / h;
            w = obj.width || w;
            h = obj.height || (w / scale);
        var quality = 0.7;        // 默认图片质量为0.7
        
        //生成canvas
        var canvas = document.createElement('canvas');
        var ctx = canvas.getContext('2d');
        
        // 创建属性节点
        var anw = document.createAttribute("width");
        anw.nodeValue = w;
        var anh = document.createAttribute("height");
        anh.nodeValue = h;
        canvas.setAttributeNode(anw);
        canvas.setAttributeNode(anh);
              
        ctx.drawImage(that, 0, 0, w, h);
        // 图像质量
        if(obj.quality && obj.quality <= 1 && obj.quality > 0){
            quality = obj.quality;
        }
        // quality值越小,所绘制出的图像越模糊
        var base64 = canvas.toDataURL('image/jpeg', quality );
        // 回调函数返回base64的值
        callback(base64);
    }
}
View Code

// 调用函数处理图片                 
dealImage("路径", {
// 注意:在pc端可以用绝对路径或相对路径,移动端最好用绝对路径(因为用take photo后的图片路径,我没有试成功(如果有人试成功了可以分享一下经验))
width : 200
}, function(base){
//直接将获取到的base64的字符串,放到一个image标签中就可看到测试后的压缩之后的样式图了
document.getElementById("transform").src = base;
console.log("压缩后:" + base.length / 1024 + " " + base);    
})

 

图片压缩参考地址:http://www.qdfuns.com/notes/21482/92e6f250e00c245be9bbf9b90102d39d.html

http://blog.csdn.net/cdnight/article/details/46417951

posted on 2017-09-21 14:11  小海豚Dolphins  阅读(100)  评论(0)    收藏  举报