一、先将网络资源转换成file,然后调用转换方法进行转换
public String getBase64(String imageUrl) throws IOException {
File file = null;
String fileName = imageUrl.substring(imageUrl.lastIndexOf("."),imageUrl.length());
URL urlfile;
InputStream inputStream = null;
OutputStream outputStream= null;
try {
file = File.createTempFile("wx_image", fileName);
//下载
urlfile = new URL(imageUrl);
inputStream = urlfile.openStream();
outputStream= new FileOutputStream(file);
int bytesRead = 0;
byte[] buffer = new byte[8192];
while ((bytesRead = inputStream.read(buffer, 0, 8192)) != -1) {
outputStream.write(buffer, 0, bytesRead);
}
} catch (Exception e) {
e.printStackTrace();
}finally {
try {
if (null != outputStream) {
outputStream.close();
}
if (null != inputStream) {
inputStream.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
return getBase64ceshi(file);
}
二、定义转换方法
public String getBase64ceshi(File file) throws IOException {
String base64Str = null;
FileInputStream inputStream = null;
try {
Base64.Encoder encoder = Base64.getEncoder();
inputStream = new FileInputStream(file);
int available = inputStream.available();
byte[] bytes = new byte[available];
inputStream.read(bytes);
base64Str = encoder.encodeToString(bytes);
} catch (Exception e) {
e.printStackTrace();
}finally {
inputStream.close();
}
return replaceEnter(base64Str);
}
三、替换编码后字符串中的空格
public static String replaceEnter(String str){
String reg ="[\n-\r]";
Pattern p = Pattern.compile(reg);
Matcher m = p.matcher(str);
return m.replaceAll("");
}