静态资源服务器配置

1、application.properties文件配置如下

server.port=8899

# 配置静态资源服务器的资源路径
# 默认情况下,我们的访问服务器时,端口号之后的路径是在访问当前项目static目录下的内容
# 例如localhost:8899/index.html 是在static目录下寻找index.html来显示
# 但是我们现在要访问的是F:/upload路径下的各种图片资源
# 所以我们要将默认的路径修改为F:/upload
# 这样我们再访问localhost:8899/a.jpg时,访问的就是F:/upload/a.jpg了
spring.resources.static-locations=file:F:/upload

# 上传文件的路径以及静态资源服务器的路径
knows.resource.path=file:F:/upload
knows.resource.host=http://localhost:8899

2、在Controller中编写如下代码

// 从application.properties文件中获得配置数据的注解
@Value("${knows.resource.path}")
private File resourcePath;
@Value("${knows.resource.host}")
private String resourceHost;


// 文件上传的方法
@PostMapping("/upload/file")
public String upload(MultipartFile imageFile) throws IOException {

    // 1.确定文件保存的路径
    //  会将不同日期的文件保存在不同的文件夹中,所以使用当前年月日组成文件夹名
    // path:2022/01/04
    String path= DateTimeFormatter.ofPattern("yyyy/MM/dd")
                                .format(LocalDateTime.now());
    // 确定并实例化要上传的文件夹路径对象
    //  F:/upload/2022/01/04
    		     //  ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
    File folder=new File(resourcePath,path);
    // 创建文件夹
    folder.mkdirs();// mkdirssssssssss!!!!

    // 2.确定文件名
    // 获得原始文件名以截取文件后缀名
    String filename=imageFile.getOriginalFilename();// 原始文件名
    // 截取后缀名ab.c.jpg     ->    .jpg
    //         01234567      substring(4)
    String ext=filename.substring(filename.lastIndexOf("."));
    // 创建随机新文件名以尽量减少文件名重复几率
    //   name:aidjvas-32ujd-91nbasj-ahdsfuhauasdf.jpg
    String name= UUID.randomUUID().toString()+ext;

    // 3.执行上传
    // 实例化要保存的文件对象(路径名+文件名的对象)
    File file=new File(folder,name);
    // 输出实际上传路径以方便测试观察
    log.debug("文件上传路径:{}",file.getAbsolutePath());
    // 执行上传
    imageFile.transferTo(file);

    // 我们要实现回显,必须得到上传的文件在静态资源服务器的路径
    // 例如  http://localhost:8899/2022/01/04/dac23as....aa0d.jpg
    //         resourceHost    /     path   /      name
    // 我们拼接获得访问这个上传文件的url
    //  ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
    String url=resourceHost+"/"+path+"/"+name;
    log.debug("回显上传图片的url:{}",url);
    // 4.返回结果 返回url以回显图片
    //     ↓↓↓
    return url;

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值