本文实现批量图片上传,环境为:
JDK11
Maven 3.5
springboot 2.3.7
IntelliJ IDEA 2021.2.3 (Community Edition)
Postman-win64-8.12.4
实现 依赖配置pom.xml
4.0.0 org.springframework.boot spring-boot-starter-parent2.3.7.RELEASE org.example springboot-upload-image1.0-SNAPSHOT 11 11 org.springframework.boot spring-boot-starter-weborg.springframework.boot spring-boot-starter-web-servicesorg.projectlombok lomboktrue org.springframework.boot spring-boot-starter-testtest
application.properties
spring.servlet.multipart.max-request-size=10MB spring.servlet.multipart.max-file-size=10MB功能编写
主程序类 MainApplication.java
package org.sample;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class MainApplication {
public static void main(String[] args) {
SpringApplication.run(MainApplication.class, args);
}
}
控制类编写 FileController.java
package org.sample.controller;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import javax.servlet.http.HttpServletRequest;
import java.io.InputStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Iterator;
import java.util.List;
@RestController
@Slf4j
public class FileController {
private static String UPLOAD_PATH = "File/image";
// 上传图片
@RequestMapping(value = "/uploadImage", method = RequestMethod.POST)
@ResponseBody
public String uploadImage(HttpServletRequest httpServletRequest) {
MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) httpServletRequest;
Iterator fileNames = multiRequest.getFileNames();
List multipartFiles = multiRequest.getFiles(fileNames.next());
for (MultipartFile image : multipartFiles) {
try {
String name = image.getOriginalFilename();
System.out.println(name);
InputStream inputStream = image.getInputStream();
Path directory = Paths.get(UPLOAD_PATH);
if (!Files.exists(directory)) {
Files.createDirectories(directory);
}
long copy = Files.copy(inputStream, directory.resolve(name));
} catch (Exception e) {
log.error(e.getMessage(), e);
return "上传失败";
}
}
return "上传成功,大小:" + " ; url访问路径为:" + UPLOAD_PATH;
}
}
文件结构
运行
运行 MainApplication.java
打开postman,编写post请求如下:
请求体选择form-data,数据选择file类型,点击select files:
我们选择几个图片,然后send
上传成功,可以看到图片名字已经打印出来了
我们查看图片保存目录:
可以看到刚刚的图片,成功



