java web开发,页面处理Base64编码
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java web开发,页面处理Base64编码相关的知识,希望对你有一定的参考价值。
我已经在页面把用户选择的图片转换成base64编码的字符串放入数据库中 重要的是取出来的时候,不想把转码好的图片解码成具体的图片放入本地磁盘我是想直接在页面输出这个图片,而不是解码好放入本地磁盘在显示 求具体实现,代码思路,有例子加分邮箱:wg3363@163.com在线等 急
参考技术A 以使用Oracle数据库举例,有两种实现方式.一种是使用Clob类型字段,存放Base64编码之后的图片,WEB应用程序在获取到该字段(String对象)之后,使用Base64进行反编码,然后输出.
还有一种是使用Blob二进制大对象字段,直接存储对象的字节流.可以是任意的对象,例如图片,视频,文件等,然后WEB应用程序通过获取Blob对象重新构造字节流成为原本的对象.
但是无论使用哪一种方式,在真是业务开发中非必要的情况下是绝对不推荐的,因为数据越大,存取数据库所发生的性能消耗就越高,应用程序的效率就会比较低下.在后续的系统移至也无法通过SQL脚本进行,只能通过Oracle DMP的方式进行.因为无论是long,Clob还是Blob,都是无法通过简单的SQL进行插入的,推荐的做法是在数据库VARCHAR2字段存放该文件(图片,视频,文件等)的WEB容器相对路径,WEB应用程序仅仅通过该路径对需要访问的对象进行链接. 参考技术B 这个很简单,但是我是用.net平台的,只能给你个思路:
1、所有这种图片的路径这么些XXX.b64pic,扩展名b64pic
2、建立一个http handler,专门处理扩展名为b64pic的请求
3、在这个handler中写代码,读base64编码的字符串,做为img类型的流输出
关键点就是这个http handler,不知道java和java服务器能否支持自定义的http handler。
Java 处理图片 base64 编码的相互转换
前言:
环境:使用这个代码前:请确保你的JDk是JAVA8及其以上
开发测试地址:http://imgbase64.duoshitong.com/ 可以查看是否执行成功
注意事项:
一般插件返回的base64编码的字符串都是有一个前缀的。"data:image/jpeg;base64," 解码之前这个得去掉。
Code:
MainTest
1 /** 2 * 示例 3 * @throws UnsupportedEncodingException 4 * @throws FileNotFoundException 5 */ 6 @SuppressWarnings("resource") 7 public static void main(String[] args) throws UnsupportedEncodingException, FileNotFoundException { 8 String strImg = getImageStr("Z:\\\\水印\\\\2.bmp"); 9 System.out.println(strImg); 10 File file = new File("z://1.txt"); 11 FileOutputStream fos = new FileOutputStream(file); 12 OutputStreamWriter osw = new OutputStreamWriter(fos, "UTF-8"); 13 try { 14 osw.write(strImg); 15 } catch (IOException e) { 16 // TODO Auto-generated catch block 17 e.printStackTrace(); 18 } 19 //generateImage(strImg, "Z:\\\\水印\\\\444.bmp"); 20 21 }
加密:
1 ** 2 * @Description: 根据图片地址转换为base64编码字符串 3 * @Author: 4 * @CreateTime: 5 * @return 6 */ 7 public static String getImageStr(String imgFile) { 8 InputStream inputStream = null; 9 byte[] data = null; 10 try { 11 inputStream = new FileInputStream(imgFile); 12 data = new byte[inputStream.available()]; 13 inputStream.read(data); 14 inputStream.close(); 15 } catch (IOException e) { 16 e.printStackTrace(); 17 } 18 // 加密 19 Encoder encoder = Base64.getEncoder(); 20 return encoder.encodeToString(data); 21 }
解密:
1 /** 2 * @Description: 将base64编码字符串转换为图片 3 * @Author: 4 * @CreateTime: 5 * @param imgStr base64编码字符串 6 * @param path 图片路径-具体到文件 7 * @return 8 */ 9 public static boolean generateImage(String imgStr, String path) { 10 if (imgStr == null) 11 return false; 12 // 解密 13 try { 14 Decoder decoder = Base64.getDecoder(); 15 byte[] b = decoder.decode(imgStr); 16 // 处理数据 17 for (int i = 0; i < b.length; ++i) { 18 if (b[i] < 0) { 19 b[i] += 256; 20 } 21 } 22 OutputStream out = new FileOutputStream(path); 23 out.write(b); 24 out.flush(); 25 out.close(); 26 return true; 27 } catch (IOException e) { 28 return false; 29 } 30 }
以上是关于java web开发,页面处理Base64编码的主要内容,如果未能解决你的问题,请参考以下文章
PHP/Java for Android 之间的数据编码/解码
Java将图片转化为base64编码并且通过thymeleaf将图片在页面展示