网页图片上传到服务器,Js(基于jQuey)网页端压缩图片后上传服务器

enctype="multipart/form-data">这种模式,另一种是方式就是通过文件的base64位编码,然后上传这段code后端解析这段code,这样便可以脱离文件本身。

(2)通常上传图片的时候是通过表单控件来上传,可不可以通过获取图片链接压缩这个图片后来上传呢,这样是不行的,首先目前很多浏览器从隐私的角度上看,是不允许获取到完成的图片路径的,其次要是我们真的压缩了文件,那不是改变了源文件,也道理上也是不允许的,浏览器只能引用这个图片。

(3)综合上述两点,通过获取文件的base64位编码来上传图片是比较合理的,就需要通过浏览器压缩原有的图片得到压缩图片的base64位图片的code上传。

技术分析:需要浏览器支持h5,然后使用h5内置的canvas技术来压缩图片,目前主流的浏览器都已经支持h5,尤其是在wap端,可以放心使用,不过在pc上,一些低版本的浏览器可能不支持,需要适当做好兼容性。具体情况可以参考这篇文章,https://www.zhihu.com/question/19613759。

代码呈现:这里通过一段完整的ajax方式来展示图片的压缩过程(基于jQuery环境,请在头部添加)。

//核心代码 压缩图片并返回base64code ratio表示图片质量0-1之间

function resizeImage(img,width,height,ratio){

var canvas, ctx, baseCode64;

canvas = document.createElement('canvas');

canvas.width = width;

canvas.height = height;

ctx = canvas.getContext("2d");

ctx.drawImage(img, 0, 0, width, height);

baseCode64 = canvas.toDataURL("image/jpeg", ratio);

return baseCode64;

}

/*

*在你的网页里面应该有一个元素

*

*/

function startUpload(obj){

var input=obj;

if(input.files){

var imageName=obj.files[0];//获取file文件名

//读取图片数据

var f = input.files[0];

/***************************核心代码 reader方法读取图片 start************************/

var reader = new FileReader();

reader.onload = function (e) {

var data = e.target.result;

//加载图片获取图片真实宽度和高度

var image = new Image();

image.οnlοad=function(){

var width = image.width;

var height = image.height;

//图片预判断,获取上传图片的的大小

if(width<640){

alert("图片的长不能小于640像素!");

}else if(height<480){

alert("图片的宽不能小于480像素!");

}

//图片上传

else{

var base64=resizeImage(image,width,height,1);

//$('body').html('

'+base64+'');return;调试图片的压缩结果

var url=$(obj).data('remote');

//发起异步传输请求,将压缩后图片的base64编码发送到服务器供解析

$.ajax({

type:'post',

url: url, //用于文件上传的服务器端请求地址

data:{

image:base64,

image_name:imageName

},

dataType: 'json', //返回值类型 一般设置为json

success: function (rs) //服务器成功响应处理函数

{

//服务器响应成功处理函数,您可以在里面进行数据处理

},

error: function (data, status, e)//服务器响应失败处理函数

{

alert(e);

}

});

}

};

image.src= data;

};

reader.readAsDataURL(f);

/**核心代码 reader方法读取图片 end****/

}else{

alert("未检测到图片!");

}

}

技术点总结:

(1)Js压缩前端图片

(2)base64位图片编码

(3)获取file控件的文件名

(4)Js获取图片文件的长度和宽度

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值