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); } }
// 调用函数处理图片
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
浙公网安备 33010602011771号