文章目录
1、上传单个文件
1.1 导入文件上传依赖jar包
Spring MVC实现文件上传,需要再添加两个jar包。一个是文件上传的jar包,一个是其所依赖的IO包。这两个jar包,均在Spring支持的org.apache.commons中。具体jar包如下:
1.2 创建上传页面
在WEB-INF/jsp下创建名为“upload”的文件夹用来存放文件上传页面,在该文件夹下创建名为“upload.jsp”的具有文件上传功能的JSP页面。其表单的设置需要注意,method属性为POST,enctype属性为multipart/form-data。另外,需要注意file表单元素的参数名称,Controller中需要使用,具体代码如下:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>文件上传</title>
</head>
<body>
<h1>单文件上传演示案例</h1>
<form action="doUploadSingle.action" method="post" enctype="multipart/form-data">
请选择上传的图片:<input type="file" name="photo" /><br/>
<input type="submit" value="上传单个文件" />
</form>
</body>
</html>
1.3 定义处理器(Controller)
提前在“out/artifacts/SSMLearn_war_exploded/”路径下创建名为“images”的文件夹用来保存上传到服务器上的图片。路径如下图所示:
然后,在“com.ccff.controller”下创建名为“UploadController”的控制器。具体代码如下所示:
package com.ccff.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.io.File;
import java.io.IOException;
import java.util.UUID;
@Controller
@RequestMapping("/UploadTest")
public class UploadController {
@RequestMapping("/upload")
public String upload(){
return "upload/upload";
}
@RequestMapping("/doUploadSingle")
public String doUploadSingle(MultipartFile photo, HttpServletRequest request, Model model) throws IOException {
if (!photo.isEmpty()){
//服务端的images目录需要手动先创建好
String path = request.getServletContext().getRealPath("/images");
//获取原始文件名
String fileName = photo.getOriginalFilename();
//新的图片名称(UUID的随机名称)
String newFileName = UUID.randomUUID() + "-" + fileName;
//限制文件上传类型
if (fileName.endsWith(".jpg") || fileName.endsWith(".png") || fileName.endsWith("gif")){
File file = new File(path,newFileName);
//完成上传
photo