springboot上传图片到本地或者阿里云服务器,然后本地访问或者外网访问的步骤
废话不多说,直接上代码:
/**
* @Description: 文件上传
* @Author: gaolei
* @CreateDate: 2019/6/26 0026 16:20
*@PARAM:
*/
@Override
public String upload(MultipartFile file) throws IOException {
// 获取文件名
String fileName = file.getOriginalFilename();
// 获取文件的后缀名
String suffixName = fileName.substring(fileName.lastIndexOf("."));
// 解决中文问题,liunx下中文路径,图片显示问题
fileName = UUID.randomUUID().toString().replace("-", "") + suffixName;
// 返回客户端 文件地址 URL
String url = "http://47.100.204.62:8080/advermachine"+"/upload/" + fileName;
// String url = "localhost:8090"+"/upload/" + fileName;
File dest = new File(ApiConstant.UPLOAD_PATH + fileName);
// File dest = new File(ApiConstant.DEV_UPLOAD_PATH + fileName);
// 检测是否存在目录
if (!dest.getParentFile().exists()) {
dest.getParentFile().mkdirs();
}
file.transferTo(dest);
// return new ResultBuilder<>().setData(MapUtil.returnMap("url",url)).build();
return url;
}
映射配置
package com.jmkj.admin.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class MyPicConfig implements WebMvcConfigurer {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/upload/**").addResourceLocations("file:/opt/upload/");
//registry.addResourceHandler("/upload/**").addResourceLocations("file:D:/upload/");
}
}
public class ApiConstant {
/**
* 文件上传路径
*/
public static final String UPLOAD_PATH = "/opt/upload/";
public static final String PRO_UPLOAD_PATH = "/home/ggj/soft/upload/";
public static final String DEV_UPLOAD_PATH = "D:/upload/";
}
@RequestMapping(value = "/upload.action", method = RequestMethod.POST)
public String upload(@RequestParam("file") MultipartFile file) throws IOException{
if(file != null){
return orderService.upload(file);
}
return "文件不存在";
}
postman测试
上传成功之后访问:
localhost+端口号+映射配置的地址+图片名字就可以访问
阿里云服务器也是一个道理,先将项目打包发布到服务器上去,然后postman测试上传图片,然后访问地址是:ip+端口号(一般是8080)+项目名字+映射+图片名字