java处理Base64存到服务器中(html控制摄像头拍照)

此文章已经默认我们拿到了前端的base64数据,

以下是我通过canvas调用摄像头拍照,返回的base64数据,此时我在浏览器的控制台输出了一下此数据,是已经拿到的。那么现在我通过jquery发送一个请求到我的servlet,把这个数据顺带也发了过去。

后台拿到之后进行一下判断,看看我们有没有拿到此数据。

好了,重头戏来了,.

public static String uploadPath = "../cinema_images";
public Boolean upload(PageContext pageContext, String imgStr) {
	
			String basePath = pageContext.getServletContext().getRealPath("/"); // 对应的实例名  就是jsp中内置对象 application
			System.out.println( basePath );
			String fileName =  uploadPath + "/" + new Date().getTime() + ".png"; // 上传的文件名
			String filePath = basePath; // 文件保存路径  绝对路径 
			System.out.println(filePath);
			System.out.println(fileName);
	        imgStr = imgStr.replace("data:image/png;base64,",""); //base64的格式的前缀必须去掉,否则解密是会报错
	       
	        try {
	        	 Decoder decoder = Base64.getDecoder(); //拿到解密对象
	 	        byte[] b = decoder.decode(imgStr); // 进行解密 返回一个byte数组
	 	       
	 	        ByteArrayInputStream bais = new ByteArrayInputStream(b);
				BufferedImage image = ImageIO.read(bais);
				Boolean image2 = ImageIO.write(image, "png", new File(filePath , fileName));
				return image2;
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		
		return false;
		
	}

 我封装了一个方法,这里先定义一个默认的上传路径,uploadPath。、

调用此方法需传两个参数,一个是PageContext 对象,一个是我们前端发来的base64数据。

首先我们先通过pagecontext自带的方法获得我们服务器的绝对路径

再给我们的base64数据定义一个文件名,注意这里定义我们是用字符串拼接的方式,后面需要加上".png"。

然后需要将我们的base64数据的前缀去掉,不然等下解密的时候是行不通的。

接着就是通过Decoder decoder = Base64.getDecoder() 对我们的base64数据进行解密。

解密完成之后用我们的BufferImage 进行读取

接着就是写操作了,如图。

好了,现在我们看看如何调用此方法吧。

protected Boolean findss(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		
		String imgStr = req.getParameter("photo");
		System.out.println(imgStr);
		 if (imgStr == null || "".equals(imgStr)){
             return null;
        }
        PageContext pageContext = JspFactory.getDefaultFactory().getDefaultFactory().getPageContext(this, req, resp, null, true, 2048, true);
        Base64UplodUtil upload = new Base64UplodUtil();
        return upload.upload(pageContext,imgStr);
	}

最后我们看看效果吧。

 

over!

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值