Java 使用Base64将图片保存到数据库和显示图片

阅读更多

Java 使用Base64将图片保存到数据库和显示图片

Java Base64保存图片

 

 

================================

©Copyright 蕃薯耀 2019年5月28日

http://fanshuyao.iteye.com/

 

一、将图片以Base64保存到数据库blob字段中

import org.apache.commons.io.FileUtils;

import sun.misc.BASE64Encoder;

import sun.misc.BASE64Decoder;

	/**
	 * 以Base64保存图片到数据库
	 * @param request
	 * @param file
	 * @throws Exception
	 */
	public void saveImage(HttpServletRequest request, File file) throws Exception{
		byte[] fileByteArray = FileUtils.readFileToByteArray(file);
		BASE64Encoder encoder = new BASE64Encoder();
		String imageString = encoder.encode(fileByteArray);
		String sql = "update image_table set image = ? where id = ?";
		List params = new ArrayList();
		params.add(imageString);
		params.add(1);
		getDao().update(sql, params);
	}

 

 二、页面请求及页面显示Base64字符串的图片

 

方式一:直接Base64方式显示(浏览器不会缓存图片)

 

	/**
	 * 显示Base64的图片
	 * @param request
	 * @param response
	 * @return
	 * @throws Exception
	 */
	public String showImage(HttpServletRequest request, HttpServletResponse response) throws Exception{
		
		File file = new File("C:\\Users\\xxx\\Desktop\\a.png");//图片路径
		byte[] fileByteArray = FileUtils.readFileToByteArray(file);
		
		BASE64Encoder encoder = new BASE64Encoder();
		String imageString = encoder.encode(fileByteArray);//转换成Base64形式,或者直接从数据库取出来
		
		request.setAttribute("imageString", imageString);

		return "/showImage";
	}
 
页面显示:图片是PNG格式的,但下面的2种方式在IE11下都能正常显示
PNG图片
Jpeg图片
 
方式二:转成输出流方式显示(浏览器会缓存图片)
	/**
	 * 以输出流显示图片
	 * @param request
	 * @param response
	 */
	public void getImage(HttpServletRequest request, HttpServletResponse response){
		try {
			
			//将图片转成Base64格式
			File file = new File("C:\\Users\\xxx\\Desktop\\a.png");//图片路径
			byte[] fileByteArray = FileUtils.readFileToByteArray(file);
			BASE64Encoder encoder = new BASE64Encoder();
			String imageString = encoder.encode(fileByteArray);//转换成Base64形式,或者直接从数据库取出来

			//将Base64格式的图片解码成字节
			BASE64Decoder decoder = new BASE64Decoder();
			byte[] imageByteArray = decoder.decodeBuffer(imageString);

			//以图片流形式输出到页面
			response.setContentType("image/jpeg");
			ServletOutputStream out = response.getOutputStream();
			out.write(imageByteArray);
			out.flush();
			out.close();

		}catch (Exception e) {
			logger.error("系统程序产生异常:", e);
		}catch (Throwable thr) {
			logger.error("系统程序产生Throwable异常:", thr);
		}
	}
 
页面显示:
图片

 

 

================================

©Copyright 蕃薯耀 2019年5月28日

http://fanshuyao.iteye.com/

 

 

 

 

你可能感兴趣的:(Java,Java,Base64保存图片,Java,Base64显示图片,Java,Base64,图片,蕃薯耀)