黑马2023Javaweb(11)|案例(文件上传&修改员工&配置文件)

一:文件上传

1.简介

1.1 前端

前端页面3要素

8f4bdd184f2141c7b30c78d4a35ce629.png

4bf32626a1754312961561fa23293395.png

6a21929d1942413abc6e60951008651e.png

d0699fc36423486fb48e58d2a8096f6e.png

1.2后端

【Java Web】011 -- SpringBootWeb综合案例(删除/修改员工、文件上传、配置文件)-CSDN博客

ad9dd44352f14136a5933575367377d5.png

// uploadController层

@Slf4j
@RestController
public class UploadController {

    public Result upload(String name, Integer age, MultipartFile image){
        log.info("文件上传:{},{},{}",name,age,image);
        return Result.success();
    } //通过MultipartFile image)直接可上传文件

}

//通过MultipartFile image)直接可上传文件,但是文件是临时上传,一旦该请求结束,这些临时文件也会删除。因此需要保存下来--本地存  &  云端存(阿里云)

0659ad6ef0d9451782b1ffdb01cf93ef.png

0cd3f8a48a1544cab5d2608c53d550d9.png

2.本地存储

将文件存储到本地磁盘中

61c7dba8c3224a32bc4f2e2fa9ea5c42.png

Postman测试

521fffa85fb8438e9cbb244c65bb96f1.png

5b104bddf4164f56826ad2f8759c9605.png

c4c118a893a145a7ac58203d991d12d3.png

2.1问题:重命名文件会把上面的文件顶掉

@PostMapping("/upload")
    public Result upload(String name, Integer age, MultipartFile image) throws IOException {
        log.info("文件上传:{},{},{}",name,age,image);
        //获取原始文件名
        String originalFilename =image.getOriginalFilename();

        //问题:文件名重名,新上传文件会顶掉旧文件
        //解决方法:uuid,通用唯一识别码,本质上是一个长度固定且唯一的字符串
        int index =originalFilename.lastIndexOf(".");
        String extname =originalFilename.substring(index);
        String newFileName= UUID.randomUUID().toString()+extname;
        log.info("新的文件名:{}",newFileName);

        //将文件存储到本地磁盘
        image.transferTo(new File("C:\\Users\\Hp\\Pictures\\Saved Pictures\\"+originalFilename));
        return Result.success();
    }

2.2问题:Springboot默认上传最大为1M,超出会报错

cfdc41d3071c42aea38a8c7c234aa386.png

spring.servlet.multipart.max-file-size = 50MB
spring.servlet.multipart.max-request-size = 50MB
server.tomcat.max-swallow-size = 100MB # 最重要的是这一行

注意上面最重要的是要配置内嵌的 tomcat 的最大吞吐量即 max-swallow-size,可以设置 -1 不限制,也可以设置一下比较大的数字这里微酷设置 100M。当上传文件超 tomcat 的大小限制后会先于 Controller 触发异常,所以这时我们的异常处理类无法捕获 Controller 层的异常。

这样当上传文件超大小限制后就可以被全局异常处理类捕获了。

3.云存储(阿里云OSS)

f91bfc7f9a5544028d482597c29e6742.png

3.1 阿里云介绍

0f2e5696d8dd405691063f010db162c2.png

3.2 对象存储服务OSS

2ad9278bf31f4ea1ab6ba077d59f9c0d.png

3.3 阿里云准备工作-开通OSS-创建bucket-获取AccessKey密钥

【Java Web】011 -- SpringBootWeb综合案例(删除/修改员工、文件上传、配置文件)-CSDN博客

3.4 参照官方SDK编写入门程序

(1)安装SDK

8b7509691e0840e59a61096adb740aca.png

b51baeaaa1d140599a4aae5059ca438d.png

<dependency>
            <groupId>com.aliyun.oss</groupId>
            <artifactId>aliyun-sdk-oss</artifactId>
            <version>3.15.1</version>
        </dependency>

如果使用的是Java 9及以上的版本,则需要添加JAXB相关依赖

1a75d684dc6e444e9b758091f7ea9c94.png

<dependency>
    <groupId>javax.xml.bind</groupId>
    <artifactId>jaxb-api</artifactId>
    <version>2.3.1</version>
</dependency>
<dependency>
    <groupId>javax.activation</groupId>
    <artifactId>activation</artifactId>
    <version>1.1.1</version>
</dependency>
<!-- no more than 2.3.3-->
<dependency>
    <groupId>org.glassfish.jaxb</groupId>
    <artifactId>jaxb-runtime</artifactId>
    <version>2.3.3</version>
</dependency>

(2)参照文档,直接复制代码再修改

519b0a11b5f54a878aae6baec50d2471.png

修改地域名

80b47b18a6624b3ebd591e1be0e9a14b.png

32270631e877419a8afd0100ca838752.png

c81999721fe946f499372a8664b632b1.png

ae17de9569114361a2d1bef11c22ebcf.png

运行文件上传

3edbca5b7f574084aaf96175e3ef9ccf.png

ee4ff7f7b7554c07be52602e96668fe9.png

3.5 案例集成OSS

f83fb6a023324524816b3694a014a30a.png

32b438bd3262458ea49781558785b6cc.png

f7fe51eeca7c4c608f8d919eac50cb87.png

@Autowired
    private  AliOSSUtils aliOSSUtils;
    
    //阿里云上传
    @PostMapping("/upload")
    public Result upload(MultipartFile image) throws IOException {
        log.info("文件上传:{}",image);
        
        //使用阿里云OSS工具类进行文件上传
        String url= aliOSSUtils.upload(image);  //
        //new对象AliOSSUtils,Springboot中,容器管理
        log.info("文件上传完毕,访问路径为:{}",url);
        
        return Result.success(url);
    }

测试

922f8e193755471aa7196c35e9836fd6.png

二:修改员工

61010a918f4142f99d226700f9d3c307.png

1.根据id查询员工

4aa96eb9f97443979551cbf227433b42.png

44f8df59f61a40dd894543ef793a7b8b.png

6f41ec3d42f644b78f8076ce33bd0639.png

2.修改信息

d6d963185c1b4e459c8436b483f93a82.png

bd6074d5c13841ee83124b7a91a58e95.png

三:配置文件

8c9eb6d0eb8b4a75a92515148a512835.png

【Java Web】011 -- SpringBootWeb综合案例(删除/修改员工、文件上传、配置文件)-CSDN博客

20a13e6ffea04959add71ba6fc1c9463.png

@value 参数配置,单个参数

8367851285494552b0320a784400fcec.png

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值