创建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请求测试