通过base64字符串之间的编码解码实现图片上传

来源:互联网 发布:小天才手表没有网络 编辑:程序博客网 时间:2024/05/17 10:09

需要的jar包

BASE64Decoder.jar


html模块

选择文件:<input type="file" id="fileName" name="fileName">

js模块

function uploadPic() {//获取File文件var file = document.getElementById('fileName').files[0];//声明一个文件流var reader = new FileReader();//如果文件不为null则开始读取2进制数据到文件流(reader)里面if (file) {reader.readAsDataURL(file);}reader.onload = function() {//文件大小var fileSize = file.size//最大文件大小var maxSize = 10 * 1024 * 1024;//限制文件大小if (fileSize > maxSize) {mui.alert('上传文件大小超过限制(最大4M)')} else {//把二进制转成base64编码字符串var base64 = reader.result.split(',')[1];reader.fileSize//二进制提交到后台处理,并返回图片地址$.ajax({url : 'User/Info',type : 'POST',dataType : 'json',data : {'fileName' : base64},success : function(data) {alert("上传成功");},error : function() {alert('上传失败');}})//var dataUrl = 'data:image/png;base64,' + base64;//placeholder.style.backgroundImage = 'url(' + dataUrl + ')';}reader.onerror = function() {alert('图片加载出错');}}}

java模块

public void Info(HttpServletRequest request, HttpServletResponse response) throws Exception{//设置编码格式response.setCharacterEncoding("utf-8");//获取前台传来的Base64解码字符串String fw=request.getParameter("fileName");//创建一个 BASE64Decoder对象(用来解码)        BASE64Decoder decoder = new BASE64Decoder();          //把字符串进行解码成二进制        byte[] b = decoder.decodeBuffer(fw);          //调整异常数据          for(int i=0;i<b.length;++i)          {              if(b[i]<0)              {                b[i]+=256;              }          }                //生成一个jpg图片          String imgFilePath = "d://222.jpg";//新生成的图片        //获取图片的输出流        OutputStream out = new FileOutputStream(imgFilePath);        //把二进制的数据写入图片中        out.write(b);          out.flush();          out.close();                //返回一个json字符串        PrintWriter pw=response.getWriter();        pw.write("{\"msg\":\"上传成功\"}");        pw.flush();        pw.close();}



原创粉丝点击