/**
* @param zfile
* @return 读取图片并转成base64
* @throws ZipException
*/
@RegisterToSMP(serviceDisplay = "读取图片并转成base64")
@RequestMapping(value = "apiName", method = RequestMethod.POST)
private DataResult imgBase64(@RequestParam("path") String path) throws ZipException {
DataResult dr = new DataResult();
// 获取文件夹
File imgfile = new File(path);
// 获取文件夹的内容
File[] imgList = imgfile.listFiles();
List<String> imgbase = new ArrayList<>();
/**
* 读取文件里的图片信息,转成base64
*/
for (File img : imgList) {
if (img.isDirectory()) {
// 如果是目录
log.info("isDirectory:" + img.isDirectory());
} else {
String imgname = img.getName();
InputStream inputStream = null;
byte[] buffer = null;
try {
inputStream = new FileInputStream(path+"\\"+imgname);
buffer = new byte[inputStream.available()];
inputStream.read(buffer);
// 关闭inputStream流
inputStream.close();
// 此方法存在换行问题
// BASE64Encoder encoder = new BASE64Encoder();
// String data = "data:image/jpg;base64,"+encoder.encode(buffer);
//对字节数组Base64编码返回Base64编码过的字节数组字符串
String data = "data:image/jpg;base64," + Base64.encodeBase64String(buffer);
imgbase.add(data);
dr.setSuccess(true);
dr.setResults(imgbase);
} catch (IOException e) {
dr.setSuccess(false);
e.printStackTrace();
}
}
}
return dr;
}
encoder.encode() 方法转成的base64字符串有换行,导致图片不能还原。
后面用了base64中encodeBase64String方法,转出成功。
apipost调试入参