上传图片到tomcat以及oss
这里的配置是托管到nacos上的
配置
#Tomcat服务器图片上传地址
pathFile:
img: D:/apache-tomcat-9.0.41/webapps/img/
fileTomcat:
imgUrl: http://192.168.3.8:8083/img/
引入nacos配置
@Value("${pathFile.img}")
private String pathFileImg;
@Value("${fileTomcat.imgUrl}")
private String fileTomcatImgUrl;
上传图片到tomcat api
/**
* 上传图像到tomcat 测试
*
* @param file 图像
* @return
*/
@PostMapping("test")
public AjaxResult test(@RequestParam("file") MultipartFile file) {
log.info("pathFile->{}", pathFileImg);
if (!file.isEmpty()) {
String burl = fileTomcatImgUrl + "businessLicense" + "/";
String bImg = pathFileImg + "businessLicense" + "/";
// 获取文件并将其保存在某处
String myFileOriginalFilename = file.getOriginalFilename();
assert myFileOriginalFilename != null;
File file1 = new File(bImg, myFileOriginalFilename);
//上传图片到tomcat
try {
FileUtils.copyInputStreamToFile(file.getInputStream(), file1);
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("url-->" + burl + myFileOriginalFilename);
return AjaxResult.success(burl + myFileOriginalFilename);
}
return AjaxResult.error("上传失败");
}
上传图片到oss api
/**
* oss test
*
* @param file 文件
* @return
*/
@PostMapping("ossTest")
public AjaxResult ossTest(@RequestParam("file") MultipartFile file) {
if (!file.isEmpty()) {
try {
// 判断是否图片类型
String fileExtension = ImageUtil.getFileExtention(Objects.requireNonNull(file.getOriginalFilename()));
boolean image = ImageUtil.isImage(fileExtension);
if (image) {
return AjaxResult.success(200, OssUtils.uploadFileInputSteam("." + fileExtension, file));
} else {
return AjaxResult.error("文件格式不支持");
}
} catch (Exception e) {
e.printStackTrace();
return AjaxResult.error(e.getMessage());
}
}
return AjaxResult.error("上传失败");
}
/**
* 上传文件流
*
* @param oranFileName 上传到服务器上的文件路径和名称
* @param file 来自本地的文件或者文件流
*/
public static String uploadFileInputSteam(String oranFileName, MultipartFile file) {
// <yourObjectName>上传文件到OSS时需要指定包含文件后缀在内的完整路径,例如abc/efg/123.jpg
String objectName = getRandomImageName(oranFileName);
// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(ENDPOINT, ACCESS_KEY_ID, ACCESS_KEY_SECRET);
// 上传文件流
try (InputStream inputStream = new FileInputStream(transferToFile(file))) {
//上传到OSS
ossClient.putObject(CAINAER_IMG, objectName, inputStream);
} catch (Exception ex) {
ex.printStackTrace();
}
// 关闭OSSClient。
ossClient.shutdown();
//返回文件在服务器上的全路径+名称
return getRealName(objectName);
}
/**
* 获取一个随机的文件名
*
* @param oranName 初始的文件名
* @return 返回加uuid后的文件名
*/
private static String getRandomImageName(String oranName) {
//获取一个uuid 去掉-
String uuid = UUID.randomUUID().toString().replace("-", "");
//查一下是否带路径
int cutPoint = oranName.lastIndexOf("/") + 1;
//如果存在路径
if (cutPoint != 0) {
//掐头 如果开头是/ 则去掉
String head = oranName.indexOf("/") == 0 ? oranName.substring(1, cutPoint) : oranName.substring(0, cutPoint);
//去尾
String tail = oranName.substring(cutPoint);
//返回正确的带路径的图片名称
return FOLDER + head + uuid + tail;
}
//不存在 直接返回
return FOLDER + uuid + oranName;
}