要使用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使用第三方组件实现文件上传 - Python技术站