[测试]Sprint Boot

昨天,我们介绍了如何在Spring Boot中实现文件的上传。有读者问:那么如果有多个文件要同时上传呢?这就马上奉上,当碰到多个文件要同时上传的处理方法。 动手试试 本文的动手环节将基于Spring Boot中实现文件的上传一文的例子之上,所以读者可以拿上一篇的例子作为基础来进行改造,以体会这之间的 …

昨天,我们介绍了如何在Spring Boot中实现文件的上传。有读者问:那么如果有多个文件要同时上传呢?这就马上奉上,当碰到多个文件要同时上传的处理方法。

动手试试

本文的动手环节将基于Spring Boot中实现文件的上传一文的例子之上,所以读者可以拿上一篇的例子作为基础来进行改造,以体会这之间的区别,下面也主: S _要讲解核心区别的地方。

第一步:修改文件上传页面的上传表单

<~ ( R!DOCTYPE html>
<html>
<head lang="en">
<meta charset{ e ; b y="UTF-8; 1 | q" />
<title>文件上传页面 - didispace8 o D g 2 F w.com</title>7 B g E C m S i ^;
</head>
&~ G Y O s \ Plt;body>
<h1>文件上传页面</h1>
<form method="post" action="/upload" enctype="multipartO # Y t A/forl C w ym-data"o N I & j ^ O U>
文件1:<inpR z K f , $ N 8ut type="fileA N ) 7 m g $" name="files"><br>
文件2:<input tv F 1 N [ype="file" name="files"><br>
<hr>
<input type="subT O R h 5 % C _ &mit" value="提交">
</form>
</bodJ & x c x Sy>
</html>

可以看到这里多增加一个input文件A 8 * 9 z 2 `输入框,同时文件输入框的名称修改为了files( 7 x,因为是多个文件,所f f u以用了复数。注意:这几个输入框e v { 2 y V \ D的name是一样的,这样才能在后端处理文件的时候组织到一个数组中。

第二步:修改后端处理接口

@PostMapping("/upload")
@Response, D V { 5 wBody
public String create(@RequestPart MultipartFile[] fiZ H 7 gl; p r q ; yes) throws IOExceptiD e #on {
StringBuffer message = new StringBuffer();
for (MultipartFile file : files) {
String fileName = file.getOriginalFilename();
String filePath = path + fileName;
File dest = new File(filePath);
Files.copy(file.getInputStream(), dest.toPath());
messag_ { y 2 ; h M ) me.append("Upload file success : " + dest.getAbsolutePath()).append("<br>");
}
return message.toString();
}

几个重要改动:

  1. MultipartFile使用数组,参数名称files. ) Z H w h对应html页面V { X `中input的name,一定要对应。
  2. 后续处理文件T x . r U n g的主体(for循环内)跟之前的一样,就是a I W ]MultipartFile数组通过循环遍历的方式对每个文件{ i 1 D 9 c G W进行存储,然后拼接结果返回信息。

更多+ L T ; K本系列免费教程连载「点击进入汇总目录」

测试验证

第一步:启动Spring Boot应用,访问http://localhost:8080,可以看到如下的文z G O , V / s \ G件上传页面。

[测试]Sprint Boot

第二步:选择2个不大于2MB的文件,点击“提交”按钮,[ H Y ~ W完成上传。

如果上传成功,将显示类似下面的页面:

[测试]Sprint Boot

你可以根据打印的文件路径去查看文件是否真的上传了。

代码示例

本文的相关例子可以查看下面仓库中的U \ w %chapti R n g 8 5er4-4目录:

  • Github:https://) ~ P 2 n 7github.cP = k N ]om/dyc87112/SpringBoot-Learning/Q v I K +
  • Gitee:https://gitee.com/didispace/SpringBoot-Learning/

如果您觉得本文不错,` L a k欢迎Star支持,您的关注是我坚持的动力!

本文由博客( g 6 m ~ M B一文多发平台 Oper X * T – % knWrite 发布!

上一篇 2021年5月15日 下午4:23
下一篇 2021年5月15日 下午4:23