要使用SpringMVC实现文件上传,需要使用第三方组件,常用的是Apache Commons FileUpload组件。下面是详细的攻略:
要使用SpringMVC实现文件上传,需要使用第三方组件,常用的是Apache Commons FileUpload组件。下面是详细的攻略:
1. 引入包
在项目的pom.xml文件中,引入Apache Commons FileUpload组件的依赖:
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.4</version>
</dependency>
2. 编写控制器类
编写控制器类,实现文件上传的功能。代码如下:
@Controller
public class FileUploadController {
@RequestMapping(value = "/upload", method = RequestMethod.GET)
public String uploadFile() {
return "upload";
}
@RequestMapping(value = "/upload", method = RequestMethod.POST)
public String saveFile(@RequestParam("file") MultipartFile file, Model model) {
String fileName = file.getOriginalFilename();
try {
byte[] bytes = file.getBytes();
BufferedOutputStream buffStream =
new BufferedOutputStream(new FileOutputStream(new File("D:/uploads/" + fileName)));
buffStream.write(bytes);
buffStream.close();
model.addAttribute("message", "File " + fileName + " uploaded successfully.");
} catch (Exception e) {
model.addAttribute("message", "File " + fileName + " upload failed. Please try again later.");
}
return "uploadResult";
}
}
解释一下代码:
- 代码中的/upload路径对应了上传页面,这个页面我们后面会讲到。
@RequestParam("file")
注解代表上传文件的参数名是file,这个参数会通过@RequestParam注入到控制器方法中。- 在saveFile方法中,通过MultipartFile的getOriginalFilename()方法获取上传文件的名字。
- 接着通过getBytes()方法获取文件的字节码,写入文件流保存到磁盘上。
3. 编写上传页面
在项目中创建一个名为upload.jsp的JSP文件,添加以下代码:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>File Upload Form</title>
</head>
<body>
<h3>File Upload:</h3>
<form method="POST" enctype="multipart/form-data" action="/upload">
File:
<input type="file" name="file"/><br/><br/>
<input type="submit" value="Upload"/>
</form>
</body>
</html>
解释一下代码:
- HTML页面有一个表单,表单的enctype属性设置为multipart/form-data,表示上传文件的表单。
- action属性设置为/upload,表示在表单提交后会调用上传文件的方法。
4. 编写上传结果页面
在项目中创建一个名为uploadResult.jsp的JSP文件,添加以下代码:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>File Upload Result</title>
</head>
<body>
${message}
<br/>
<a href="/upload">Upload another file</a>
</body>
</html>
解释一下代码:
${message}
是控制器方法中设置的message属性的值。- 还有一个超链接,返回上传页面。
5. 测试程序
启动应用程序,访问/upload,选择要上传的文件,上传之后就可以看到上传结果页面。
这是一个简单的文件上传的SpringMVC实现,可以根据需求进行修改和扩展。
沃梦达教程
本文标题为:SpringMVC使用第三方组件实现文件上传
猜你喜欢
- 浅谈Servlet转发到JSP页面的路径问题(必看) 2023-07-31
- Java实现简单扫雷程序 2022-12-03
- SpringBoot配置文件导入方法详细讲解 2023-06-23
- SMBMS超市订单管理系统的网站源码 2024-01-27
- 使用Mybatis的Batch Insert Support 实现批量插入 2023-02-27
- Spring Cloud Gateway集成Sentinel流控详情 2023-05-19
- spring在service层的方法报错事务不会回滚的解决 2022-11-05
- SpringBoot中利用AOP和拦截器实现自定义注解 2023-02-05
- Java使用quartz实现定时任务示例详解 2023-04-07
- Java 字符串压缩与解压的开发记录 2022-12-12