将图片上传至服务器

将图片上传至服务器

第一次用URL来解析图片的url的时候发现一直报错,后来发现,URL只能操作标准的不被base64编码过的网址。当处理被base64处理过的图片的是时候就要对其网址进行解码

一:新建一个将base64转换成二进制的方法类

  1. 这里在网页上生成的二维码是被baxs64编译成了DataUrl格式,所有在后台拿到图片链接后要将它转换成二进制才能被后台识别

data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACtWK6eAAAN2UlEQVR4Xu2d4XrjOghEt+//0L1fttv0trYlcQzEac7+tZDQMANI9jZvf/78ef/zxP/e34/df3t7QzvrnvPIyW7/6b6pHQpOs9GNQQrkB+gVAR/NqUCaWR9YToHsgKVAtqCMqlkFXgEOlw5VIArkjgAlOrUrZXbS5ApEgSiQ

 

.

  1. 导入架包:sun.misc.BASE64Decoder.jar,进行反编译
  2. 反编译方法

 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();

    }

 

  1. 测试

public static void shiyong(String imgSrc,String filePath,String fileName) throws IOException{

jiema j = new jiema();

j.binaryToImg(j.base64ToBinary(imgSrc),filePath,fileName);

}

 

二:实现网页上图片的下载

  1. 在WebRoot下新建一个放二维码的文件夹QcodeImage

 

  1. 定义一个上传按钮

<button id="ss">上传二维码</button>

 

  1. 给按钮添加事件

 $("#ss").click(function(){

      alert("上传中");

    //在网站上下载图片用这个方法  downloadIamge('qrcodeImg',deleteid)

    //在后台下载图片用下面这方法

    $.post("imagee.action",{

    "imgurl":document.getElementById("qrcodeImg").src

    });

});

 

  1. 添加action

   <action name="imagee" method="imagee" class="excle">

       <result type="json">

     </result>

     </action>

 

  1. 添加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";

}

运行后图片就能被存入服务器下的文件夹里

 

 

猜你喜欢

转载自blog.csdn.net/qq_39860799/article/details/82866080