博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ImageIO读图片和上传图片到OSS上的bug
阅读量:4151 次
发布时间:2019-05-25

本文共 1298 字,大约阅读时间需要 4 分钟。

其实读图片和上传图片都可以上传本地File文件,我这儿是上传base64图片到OSS上,上传成功后再通过ImageIO读取图片,返回图片信息。我主要遇到两个问题。

1.上传和读图都不成功。原因是 参数错误,去掉data:image/jpeg;base64, 就好了

String base64="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wgARCAIxAZADASIAAhEBAxEB/8QAHAAAAQUBA";

2.上传图片成功,读图返回null.原因是上传之后流就关闭了(流虽然不为空,但是不能用两次)。为了验证,我先读图再上传,发现能读图,但是上传不成功,说明的确是这样的。

所以遇到流的问题,要时刻主要流有没有关闭。

部分代码如下:

InputStream input = null;		String url = "";		BufferedImage srcImage = null;			try {					if (StringUtils.isNoneBlank(url1)) {			String substring = url1.substring(url1.indexOf("base64,")+7);			BASE64Decoder decoder = new sun.misc.BASE64Decoder();			byte[] decodeBase64 = decoder.decodeBuffer(substring);			input = new ByteArrayInputStream(decodeBase64);			srcImage =ImageIO.read(input); 		}		//input只能用一次		if (StringUtils.isNoneBlank(url1)) {			String substring = url1.substring(url1.indexOf("base64,")+7);			BASE64Decoder decoder = new sun.misc.BASE64Decoder();			byte[] decodeBase64 = decoder.decodeBuffer(substring);			input = new ByteArrayInputStream(decodeBase64);			url = ossService.uploadImage(input); 		}					if (StringUtils.isNoneBlank(url)) {				// 上传成功

 

转载地址:http://ralti.baihongyu.com/

你可能感兴趣的文章
微软101道经典面试题
查看>>
star3
查看>>
rmq_st实现
查看>>
虚函数以及c++成员函数的调用原理
查看>>
八皇后问题
查看>>
python 处理excel
查看>>
二维数组中的查找
查看>>
编程珠玑 15.3生成文本
查看>>
库壳的一些有趣面试题
查看>>
求逆序数
查看>>
多线程操作
查看>>
多线程生产者和消费者
查看>>
多线程读写进程
查看>>
拓扑排序
查看>>
young氏矩阵
查看>>
svn
查看>>
平衡集合
查看>>
最短摘要生成算法
查看>>
信号量和互斥量
查看>>
memo
查看>>