说下背景,项目中遇到前端js获取图片发生跨域的问题,服务器端又不支持匿名访问,只能通过服务器获取图片base64码进行展示。代码如下:下载
Java代码
- /**
- * 远程读取image转换为Base64字符串
- * @param imgUrl
- * @return
- */
- private String Image2Base64(String imgUrl) {
- URL url = null;
- InputStream is = null;
- ByteArrayOutputStream outStream = null;
- HttpURLConnection httpUrl = null;
- try{
- url = new URL(imgUrl);
- httpUrl = (HttpURLConnection) url.openConnection();
- httpUrl.connect();
- httpUrl.getInputStream();
- is = httpUrl.getInputStream();
- outStream = new ByteArrayOutputStream();
- //创建一个Buffer字符串
- byte[] buffer = new byte[1024];
- //每次读取的字符串长度,如果为-1,代表全部读取完毕
- int len = 0;
- //使用一个输入流从buffer里把数据读取出来
- while( (len=is.read(buffer)) != -1 ){
- //用输出流往buffer里写入数据,中间参数代表从哪个位置开始读,len代表读取的长度
- outStream.write(buffer, 0, len);
- }
- // 对字节数组Base64编码
- return new BASE64Encoder().encode(outStream.toByteArray());
- }catch (Exception e) {
- e.printStackTrace();
- } 下载
- finally{
- if(is != null)
- {
- try {
- is.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- if(outStream != null)
- {
- try {
- outStream.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- if(httpUrl != null)
- {
- httpUrl.disconnect();
- }
- }
- return imgUrl;
- }
时间: 2024-10-18 15:32:08