Java SpringBoot上传附件练习

创建SpringBoot工程

勾选lombok

勾选Spring Web

任意命名

application.yaml 文件配置文件上传限制大小

spring:
  servlet:
    multipart:
      max-request-size: 1024MB
      max-file-size: 1024MB
entity实体类定义
package com.qtt.demo.entity;

import lombok.*;

@Data
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
/**
 * 返回实体类定义
 */
public class Resp<E> {
    private String code;
    private String message;
    private E body;

    /**
     * 成功code码
     * @param body
     * @param <E>
     * @return 200 + body
     */
    public static <E> Resp<E> success(E body) {
        return new Resp("200", "", body);
    }

    /**
     * 失败消息体定义
     * @param code
     * @param message
     * @param <E>
     * @return
     */
    public static <E> Resp<E> fail(String code, String message) {
        return new Resp(code, message, (Object) null);
    }
}

service层定义

package com.qtt.demo.service;

import com.qtt.demo.entity.Resp;
import org.springframework.web.multipart.MultipartFile;

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

impl实现层定义

package com.qtt.demo.service.impl;


import com.qtt.demo.entity.Resp;
import com.qtt.demo.service.UploadService;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;

@Service
public class UploadServiceImpl implements UploadService {
    @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 = "/tmp/test/";
        File dest = new File(filePath + fileName);
        System.out.println("dest:" + dest);
        //判断是否存在
        if (!dest.getParentFile().exists()) {
            dest.getParentFile().mkdirs();
            System.out.println("dest文件创建:" + dest);
            try {
                file.transferTo(dest);
                System.out.println("文件开始拷贝");
            } catch (IOException e) {
                e.printStackTrace();
                return Resp.fail("500", OriginalFilename + "上传失败");
            }
        }
        try {
            file.transferTo(dest);
            System.out.println("文件开始拷贝");
        } catch (IOException e) {
            e.printStackTrace();
            return Resp.fail("500", OriginalFilename + "上传失败");
        }
        return Resp.success("文件" + fileName + "上传成功");
    }
}

controller层定义

package com.qtt.demo.controller;

import com.qtt.demo.entity.Resp;
import com.qtt.demo.service.UploadService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

@RestController
public class UploadController {
    @Autowired
    private UploadService uploadService;

    @RequestMapping(path = "/upload", method = RequestMethod.POST)
//    RequestParam 对应key值
    public Resp<String> upload(@RequestParam("file") MultipartFile file) {
        return uploadService.upload(file);
    }
}

postmain请求测试

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值