Springboot实现文件上传

文件上传在没接触之前我一直以为很麻烦,学习的时候看博客鱼龙混杂,很多都是失败案例就传上来了看得我很头疼,下面是成功上传了的代码

工具类

用于返回数据

public class Resp<E> {
    private String code;
    private String message;
    private E body;

    public Resp(String code,String message,E body){
        this.code = code;
        this.message = message;
        this.body = body;
    }

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public E getBody() {
        return body;
    }

    public void setBody(E body) {
        this.body = body;
    }

    public static <E> Resp<E> success(E body){
        return new Resp("200","",body);
    }

    public static <E> Resp<E> fail(String code,String message){
        return new Resp(code,message,(Object)null);
    }
}

Service

public interface LoginService {
    Resp<String> upload(MultipartFile file);
}

ServiceImpl

@Service
public class LoginServiceImpl implements LoginService {


    @Override
    public Resp<String> upload(MultipartFile file) {
        if (file.isEmpty()){
            return Resp.fail("400","文件为空");
        }
        //获取原始文件名(带有扩展名)
        String originalFilename = file.getOriginalFilename();
        //自己定义一个新名字(存在服务器上的文件名)
        String fileName = System.currentTimeMillis()+ "."+ originalFilename.substring(originalFilename.lastIndexOf(".")+1);
        //文件存放位置
        String filePath = "D:\\2021java高级学习\\";
        System.out.println("-----------------------------------");
        System.out.println(filePath);
        System.out.println("-----------------------------------");

        //创建在硬盘上的文件
        File dest = new File(filePath+fileName);
        System.out.println("-----------------------------------");
        System.out.println(dest);
        System.out.println("-----------------------------------");
        //判断是否存在目录
        if (dest.getParentFile().exists()){
            //不存在则创建文件夹
            dest.getParentFile().mkdir();
        }
        //不一定成功所以放在try里
        try {
            file.transferTo(dest);
        }catch (Exception e){
            e.printStackTrace();
            return Resp.fail("500",originalFilename+"上传失败");
        }
        return Resp.success(fileName);
    }
}

上面文字存放路径的两个反斜杠是因为第一个是用来解析的输出之后是
在这里插入图片描述

Controller

@RestController
@RequestMapping(value = "/login")
public class LoginController {

    @Autowired
    private LoginService loginService;

    @PostMapping(value = "/upload")
    private Resp<String> upload(@RequestParam("file")MultipartFile file){
        return loginService.upload(file);
    }

}

postman调试

file那里要选File,然后就上传成功了
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Andrew0219

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值