将图片上传至服务器
第一次用URL来解析图片的url的时候发现一直报错,后来发现,URL只能操作标准的不被base64编码过的网址。当处理被base64处理过的图片的是时候就要对其网址进行解码
一:新建一个将base64转换成二进制的方法类
- 这里在网页上生成的二维码是被baxs64编译成了DataUrl格式,所有在后台拿到图片链接后要将它转换成二进制才能被后台识别
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACtWK6eAAAN2UlEQVR4Xu2d4XrjOghEt+//0L1fttv0trYlcQzEac7+tZDQMANI9jZvf/78ef/zxP/e34/df3t7QzvrnvPIyW7/6b6pHQpOs9GNQQrkB+gVAR/NqUCaWR9YToHsgKVAtqCMqlkFXgEOlw5VIArkjgAlOrUrZXbS5ApEgSiQ |
.
- 导入架包:sun.misc.BASE64Decoder.jar,进行反编译
- 反编译方法
public byte[] base64ToBinary(String imgSrc) throws IOException{ //通过base来转换图片的网址 String imgeFile=imgSrc.replaceAll("data:image/png;base64,",""); BASE64Decoder decode = new BASE64Decoder(); //将base64转换为byte[] byte[] b = decode.decodeBuffer(imgeFile); return b; } public void binaryToImg(byte[] imageByte,String filePath,String fileName) throws IOException{ //生成文件 File imageFile=new File(filePath+fileName); imageFile.createNewFile(); if(imageFile.exists()){ imageFile.createNewFile(); } OutputStream imageStream=new FileOutputStream(imageFile); imageStream.write(imageByte); imageStream.flush(); imageStream.close(); } |
- 测试
public static void shiyong(String imgSrc,String filePath,String fileName) throws IOException{ jiema j = new jiema(); j.binaryToImg(j.base64ToBinary(imgSrc),filePath,fileName); } |
二:实现网页上图片的下载
- 在WebRoot下新建一个放二维码的文件夹QcodeImage
- 定义一个上传按钮
<button id="ss">上传二维码</button> |
- 给按钮添加事件
$("#ss").click(function(){ alert("上传中"); //在网站上下载图片用这个方法 downloadIamge('qrcodeImg',deleteid) //在后台下载图片用下面这方法 $.post("imagee.action",{ "imgurl":document.getElementById("qrcodeImg").src }); }); |
- 添加action
<action name="imagee" method="imagee" class="excle"> <result type="json"> </result> </action> |
- 添加imagee方法
public String imagee() throws IOException{ System.out.println(imgurl); //处理拿到的图片信息 String filePath = ServletActionContext.getServletContext().getRealPath("/QcodeImage/"); System.out.println(filePath); String fileName=id+".png"; System.out.println(fileName); jiema.shiyong(imgurl,filePath,fileName); s = JSONTools.createJsonObject("datda", "OK"); return "success"; } |
运行后图片就能被存入服务器下的文件夹里