FileOutputStreamExample.java 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. package kd.imc.rim.utils;
  2. import kd.bos.url.UrlService;
  3. import java.io.*;
  4. import java.net.HttpURLConnection;
  5. import java.net.URL;
  6. import java.util.Base64;
  7. import static kd.bos.algox.flink.enhance.krpc.impl.DispatcherImpl.log;
  8. public class FileOutputStreamExample {
  9. public static void main(String[] args) {
  10. String filePath = "C:/Users/TR/Desktop/测试1.pdf";
  11. String imgStrToBase64 = getImgStrToBase64(filePath);
  12. }
  13. /**
  14. * 将网络链接图片或者本地图片文件转换成Base64编码字符串
  15. *
  16. * @param imgStr 网络图片Url/本地图片目录路径
  17. * @return
  18. */
  19. public static String getImgStrToBase64(String imgStr) {
  20. InputStream inputStream = null;
  21. ByteArrayOutputStream outputStream = null;
  22. byte[] buffer = null;
  23. try {
  24. //判断网络链接图片文件/本地目录图片文件
  25. if (imgStr.startsWith("http://") || imgStr.startsWith("https://")) {
  26. // 创建URL
  27. URL url = new URL(imgStr);
  28. // 创建链接
  29. HttpURLConnection conn = (HttpURLConnection) url.openConnection();
  30. conn.setRequestMethod("GET");
  31. conn.setConnectTimeout(5000);
  32. inputStream = conn.getInputStream();
  33. outputStream = new ByteArrayOutputStream();
  34. // 将内容读取内存中
  35. buffer = new byte[1024];
  36. int len = -1;
  37. while ((len = inputStream.read(buffer)) != -1) {
  38. outputStream.write(buffer, 0, len);
  39. }
  40. buffer = outputStream.toByteArray();
  41. } else {
  42. inputStream = new FileInputStream(imgStr);
  43. int count = 0;
  44. while (count == 0) {
  45. count = inputStream.available();
  46. }
  47. buffer = new byte[count];
  48. inputStream.read(buffer);
  49. }
  50. } catch (Exception e) {
  51. e.printStackTrace();
  52. } finally {
  53. if (inputStream != null) {
  54. try {
  55. // 关闭inputStream流
  56. inputStream.close();
  57. } catch (IOException e) {
  58. e.printStackTrace();
  59. }
  60. }
  61. if (outputStream != null) {
  62. try {
  63. // 关闭outputStream流
  64. outputStream.close();
  65. } catch (IOException e) {
  66. e.printStackTrace();
  67. }
  68. }
  69. }
  70. // 对字节数组Base64编码
  71. return Base64.getEncoder().encodeToString(buffer);
  72. }
  73. public static File getNetUrlHttp(String netUrl) {
  74. // UrlService.getAttachmentFullUrl(netUrl);
  75. //对本地文件命名
  76. File file = null;
  77. URL urlfile;
  78. InputStream inStream = null;
  79. OutputStream os = null;
  80. try {
  81. file = File.createTempFile("net_url", netUrl);
  82. //下载
  83. urlfile = new URL(netUrl);
  84. inStream = urlfile.openStream();
  85. os = new FileOutputStream(file);
  86. int bytesRead = 0;
  87. byte[] buffer = new byte[8192];
  88. while ((bytesRead = inStream.read(buffer, 0, 8192)) != -1) {
  89. os.write(buffer, 0, bytesRead);
  90. }
  91. } catch (Exception e) {
  92. log.error("远程图片获取错误:"+netUrl);
  93. e.printStackTrace();
  94. } finally {
  95. try {
  96. if (null != os) {
  97. os.close();
  98. }
  99. if (null != inStream) {
  100. inStream.close();
  101. }
  102. } catch (Exception e) {
  103. e.printStackTrace();
  104. }
  105. }
  106. return file;
  107. }
  108. }