SpringMVC使用第三方组件实现文件上传

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

基础教程推荐