添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

说下背景,项目中遇到前端js获取图片发生跨域的问题,服务器端又不支持匿名访问,只能通过服务器获取图片base64码进行展示。代码如下: 下载

Java代码 java远程获取图片生成base64串_springmvc

  1. /**

  2. * 远程读取p_w_picpath转换为Base64字符串

  3. * @param imgUrl

  4. * @return

  5. */

  6. private String Image2Base64(String imgUrl) {

  7. URL url = null ;

  8. InputStream is = null ;

  9. ByteArrayOutputStream outStream = null ;

  10. HttpURLConnection httpUrl = null ;

  11. try {

  12. url = new URL(imgUrl);

  13. httpUrl = (HttpURLConnection) url.openConnection();

  14. httpUrl.connect();

  15. httpUrl.getInputStream();

  16. is = httpUrl.getInputStream();

  17. outStream = new ByteArrayOutputStream();

  18. //创建一个Buffer字符串

  19. byte [] buffer = new byte [ 1024 ];

  20. //每次读取的字符串长度,如果为-1,代表全部读取完毕

  21. int len = 0 ;

  22. //使用一个输入流从buffer里把数据读取出来

  23. while ( (len=is.read(buffer)) != - 1 ){

  24. //用输出流往buffer里写入数据,中间参数代表从哪个位置开始读,len代表读取的长度

  25. outStream.write(buffer, 0 , len);

  26. }

  27. // 对字节数组Base64编码

  28. return new BASE64Encoder().encode(outStream.toByteArray());

  29. } catch (Exception e) {

  30. e.printStackTrace();

  31. } 下载

  32. finally {

  33. if (is != null )

  34. {

  35. try {

  36. is.close();

  37. } catch (IOException e) {

  38. e.printStackTrace();

  39. }

  40. }

  41. if (outStream != null )

  42. {

  43. try {

  44. outStream.close();

  45. } catch (IOException e) {

  46. e.printStackTrace();

  47. }

  48. }

  49. if (httpUrl != null )

  50. {

  51. httpUrl.disconnect();

  52. }

  53. }

  54. return imgUrl;

  55. }