Spring Boot 多文件上传
在实际的Web应用程序中,文件上传是一个常见的需求。Spring Boot提供了简单而强大的方式来实现多文件上传功能。本文将介绍如何使用Spring Boot实现多文件上传,并提供相应的代码示例。
准备工作
在开始之前,我们需要进行一些准备工作。首先,我们需要创建一个Spring Boot项目。可以使用Spring Initializr( Boot项目。在生成项目时,确保选择“Web”依赖项以便支持文件上传。
创建文件上传接口
我们首先需要创建一个Controller类来处理文件上传请求。在这个类中,我们将定义一个POST请求处理方法来接收文件上传,并将其保存到服务器上。以下是一个示例代码:
import org.springframework.http.MediaType;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.IOException;
@RestController
@RequestMapping("/upload")
public class FileUploadController {
@PostMapping(value = "/files", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public String uploadFiles(@RequestParam("files") MultipartFile[] files) {
// 检查文件是否为空
if (files == null || files.length == 0) {
return "请选择要上传的文件";
}
// 创建目录
String uploadDir = "upload/";
File dir = new File(uploadDir);
if (!dir.exists()) {
dir.mkdir();
}
// 保存文件
for (MultipartFile file : files) {
if (!file.isEmpty()) {
String fileName = StringUtils.cleanPath(file.getOriginalFilename());
try {
file.transferTo(new File(uploadDir + fileName));
} catch (IOException e) {
e.printStackTrace();
return "文件上传失败";
}
}
}
return "文件上传成功";
}
}
在上面的代码中,我们使用@PostMapping
注解来指定处理POST请求的方法。consumes
属性指定了该方法只接受multipart/form-data
类型的请求,这是文件上传请求的默认类型。我们使用@RequestParam
注解来获取上传的文件,这里使用了files
作为参数名,因此在发送文件上传请求时,需要将文件参数命名为files
。在方法体中,我们首先检查了上传的文件是否为空,然后创建了一个目录用于保存上传的文件。最后,我们使用transferTo
方法将文件保存到指定的目录中。
创建文件上传表单
接下来,我们需要创建一个HTML表单,以便用户可以选择并上传文件。以下是一个简单的示例代码:
<!DOCTYPE html>
<html>
<head>
<title>文件上传</title>
</head>
<body>
文件上传
<form action="/upload/files" method="post" enctype="multipart/form-data">
<input type="file" name="files" multiple>
<input type="submit" value="上传">
</form>
</body>
</html>
在上面的代码中,我们使用了<form>
元素来创建一个表单,其中的action
属性指定了文件上传的目标URL,这里将其设置为/upload/files
,与Controller类中的请求处理方法路径一致。enctype
属性指定了表单数据的编码类型,这里我们使用了multipart/form-data
以支持文件上传。<input>
元素的type
属性设置为file
,以便用户可以选择文件进行上传。name
属性设置为files
,与Controller类中的请求参数名一致。最后,我们使用了<input>
元素的type
属性设置为submit
,以便用户点击提交表单。
运行应用程序
完成上述代码后,我们可以启动Spring Boot应用程序并访问上传文件的表单页面。在浏览器中输入http://localhost:8080
,将看到一个简单的文件上传表单。选择并上传文件后,文件将保存在服务器上的upload/
目录中。
总结
通过使用Spring Boot,我们可以很容易地实现多文件上传功能。本文介绍了如何创建一个Controller类来处理文件上传请求,并提供了相应的代码示例。我们还创建了一个HTML表单来供用户上传文件。希望本文