关于“spring mvc实现文件上传并携带其他参数的示例”的攻略,请参考以下步骤:
1. 添加依赖
在 pom.xml
文件中添加以下 spring-web
和 commons-fileupload
的依赖:
<dependencies>
<!-- Spring Web -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>5.3.8</version>
</dependency>
<!-- Apache Commons FileUpload -->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.3</version>
</dependency>
</dependencies>
2. 配置文件上传解析器
在 Spring MVC 的配置文件中添加以下 MultipartResolver
的配置来启用文件上传解析器:
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="5242880" /> <!-- Max file size -->
<property name="maxInMemorySize" value="1048576" /> <!-- Max request size -->
</bean>
注意:maxUploadSize
表示上传文件的最大大小,这里是 5MB。maxInMemorySize
表示文件上传时内存最大限制,这里是 1MB。
3. 添加控制器
定义一个控制器来接收上传的文件和其他参数:
@Controller
public class FileUploadController {
@RequestMapping(value = "/upload", method = RequestMethod.POST)
public String handleFileUpload(@RequestParam("file") MultipartFile file,
@RequestParam("name") String name,
@RequestParam("age") int age) {
if (!file.isEmpty()) {
byte[] bytes;
try {
bytes = file.getBytes();
// do something with the bytes...
return "redirect:success.html";
} catch (IOException e) {
e.printStackTrace();
}
}
return "redirect:error.html";
}
}
使用 @RequestParam
注解来获取上传的文件和其他参数。注意:file
参数名必须和表单中的文件域的名称一致。
4. 创建表单
使用HTML编写表单,上传文件和其他参数:
<form th:action="@{/upload}" method="post" enctype="multipart/form-data">
<input type="file" id="file" name="file" />
<input type="text" id="name" name="name" />
<input type="text" id="age" name="age" />
<input type="submit" value="Upload" />
</form>
enctype="multipart/form-data"
属性用来指定表单的编码为多部分表单数据,以便支持文件上传。
示例一
为了演示如何上传单个文件并携带其他参数,以下是一个示例:
@PostMapping("/file/upload")
public String singleFileUpload(@RequestParam("file") MultipartFile file,
@RequestParam("title") String title,
@RequestParam("description") String description) {
if (file.isEmpty()) {
return "redirect:error.html";
}
try {
byte[] bytes = file.getBytes();
// do something with the bytes...
return "redirect:/success.html";
} catch (IOException e) {
e.printStackTrace();
}
return "redirect:error.html";
}
<form th:action="@{/file/upload}" method="post" enctype="multipart/form-data">
<input type="file" id="file" name="file" />
<input type="text" id="title" name="title" placeholder="Input title..." />
<input type="text" id="description" name="description" placeholder="Input description..." />
<button type="submit" class="btn btn-sm btn-primary">Submit</button>
</form>
示例二
这里演示如何上传多个文件并携带其他参数:
@PostMapping("/files/upload")
public String multipleFilesUpload(@RequestParam("files") MultipartFile[] files,
@RequestParam("title") String title,
@RequestParam("description") String description) {
if (files.length == 0) return "redirect:error.html";
for (MultipartFile file : files) {
try {
byte[] bytes = file.getBytes();
// do something with the bytes...
} catch (IOException e) {
e.printStackTrace();
}
}
return "redirect:/success.html";
}
<form th:action="@{/files/upload}" method="post" enctype="multipart/form-data">
<input type="file" id="files" name="files" multiple="" />
<input type="text" id="title" name="title" placeholder="Input title..." />
<input type="text" id="description" name="description" placeholder="Input description..." />
<button type="submit" class="btn btn-sm btn-primary">Submit</button>
</form>
以上代码仅供参考,你可以根据实际情况进行修改。建议在实际使用时添加必要的安全措施来防范潜在的漏洞。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:spring mvc实现文件上传并携带其他参数的示例 - Python技术站