码迷,mamicode.com
首页 > 其他好文 > 详细

使用data:uri上传图片

时间:2014-07-23 16:51:11      阅读:338      评论:0      收藏:0      [点我收藏+]

标签:blog   java   使用   os   数据   io   

  上传图片的方式有两种,一种是使用传统的html控件的方式,设置form属性为multipart/form-data。这种方式兼容ie6,ie7。另一种方式是使用data:uri,将base64编码从浏览器端post到服务器端,然后利用Base64解码即可。这种方式只是用与比较modern的浏览器,比如ie9,chrome,firefox,safari。本文主要讲讲我们如何利用data:uri的方式上传图片的。

  Data URI 格式 
  data URI的格式非常简单,具体可以看RFC2397,data URI基本的格式如下: 

  data:[<mime type>][;charset=<charset>][;base64],<encoded data> 
  在这个格式中, 

  data: 
  是URI的协议头,表明其资源是一个data URI。第二部分,MIME type,表示数据呈现的格式,对于PNG的图片,其格式是:image/png,如果没有指定,默认的格式是:text/plain。这个character set(字符集)大多数被忽略,如果指定是的数据格式是图片时,字符集将不再使用;下一部分,将表明其数据的编码方式,我们可以不必使用base64编码格式,如果那样,我们将使用标准的URL编码方式(形如%XX%XX%XX的格式);这个encoded data部分,可能包含空格,但是无关紧要。 

  Base 64编码 
  base64是一种编码方式,将数据变成位流(bit stream),然后将其映射到base64的集合内。base64包含A-Z,a-z,自然数以及+,/符号。等号=表明我们需要进行位填充(padding)。 

 

  处理代码:

import java.io.FileOutputStream;
import java.io.OutputStream;
import sun.misc.BASE64Decoder;

/**
 * to convert base64 string to a image
 * here we use it to handle data:uri
 *
 */
public class Base64StringToImage{
	public boolean generateImage(String imageStr, String imageFilePath){
		if(imageStr == null){
			return false;
		}
		BASE64Decoder decoder = new BASE64Decoder();  
		try {  
			// Base64 decode
			byte[] bytes = decoder.decodeBuffer(imageStr);  
			for (int i = 0; i < bytes.length; ++i) {  
				if (bytes[i] < 0) {  
					bytes[i] += 256;  
				}  
			}  
			// generate image
			OutputStream out = new FileOutputStream(imageFilePath);  
			out.write(bytes);  
			out.flush();  
			out.close();  
			return true;  
		} catch (Exception e) {  
			return false;  
		}  
	}
}

  使用data:uri上传方式很简单吧。。

使用data:uri上传图片,布布扣,bubuko.com

使用data:uri上传图片

标签:blog   java   使用   os   数据   io   

原文地址:http://www.cnblogs.com/jones-c/p/3863356.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!