linux yml 传入本地ip,Springboot 上传文件后,通过虚拟路径访问本地磁盘

网上看到的有用   WebMvcConfigurer  和  WebMvcConfigurerAdapter,试了试,都不行。

最后通过  WebMvcConfigurationSupport   解决的

1、application.yml 里增加

file:

staticAccessPath: /upload/file

# uploadFolder: e:\\upload\\

uploadFolder: /home/upload/files/

#文件上传目录(注意Linux和Windows上的目录结构不同)

#staticAccessPath 上传文件返回的地址

#uploadFolder 文件真实存放地址

#访问文件时 WebAppConfigure 会将返回的地址映射到真实地址

2、文件上传

@Value("${file.uploadFolder}")

private String uploadFolder;

@Value("${file.staticAccessPath}")

private String staticAccessPath;

public String uploadfile(@RequestParam("file")MultipartFile file, HttpServletRequest request) {

SimpleDateFormat dateformat = new SimpleDateFormat("yyyyMMdd/HHMMSS");

String pathDir = uploadFolder + File.separator

+ dateformat.format(new Date()) + (int) Math.random() * 1000

+ File.separator;

if (File.separator.equals("\\")) {

pathDir = pathDir.replace("/", "\\");

}

String filename = file.getOriginalFilename();

String extName = "";

if (null!=filename && filename.length()>0) {

int t = filename.lastIndexOf(".");

if (t > 0) {

extName = filename.substring(t).toLowerCase();

}

}

SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddhhmmssSSS");

filename = sdf.format(new Date());

pathDir += filename + extName;

logger.error("----------文件上传路径------------"+pathDir);

try {

FileUtils.copyInputStreamToFile(file.getInputStream(), new File(pathDir));

} catch (IOException e) {

e.printStackTrace();

}

String encodeddata = request.getScheme() + "://域名或者ip"+ request.getContextPath() ;

return encodeddata+pathDir.replace(uploadFolder,staticAccessPath).replace("\\", "/");

}

3、访问时替换路径

public class WebAppConfigure extends WebMvcConfigurationSupport {

@Value("${file.uploadFolder}")

private String uploadFolder;

@Value("${file.staticAccessPath}")

private String staticAccessPath;

@Override

protected void addResourceHandlers(ResourceHandlerRegistry registry) {

if(System.getProperty("os.name").toLowerCase().contains("linux")){

registry.addResourceHandler(staticAccessPath+"/**").addResourceLocations("file:"+uploadFolder);

}else if(System.getProperty("os.name").toLowerCase().contains("windows")){

registry.addResourceHandler(staticAccessPath+"/**").addResourceLocations("file:"+uploadFolder);

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值