SpringMVC单文件上传、多文件上传、文件列表显示、文件下载

林炳文Evankaka原创作品。转载请注明出处

本文详细讲解了SpringMVC实例单文件上传、多文件上传、文件列表显示、文件下载。

本文工程免费下载

一、新建一个Web工程,导入相关的包

springmvc的包+commons-fileupload.jar+connom-io.jar+commons-logging,jar+jstl.jar+standard.jar

整个相关的包如下:

整个工程目录如下:

二、配置web.xml和SpringMVC文件

(1)web.xml

<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi=""xmlns="" xmlns:web=""xsi:schemaLocation=" http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"id="WebApp_ID" version="3.0"><!– SpringMVC的前端控制器 –><servlet><servlet-name>MyDispatcher</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!– 设置自己定义的控制器xml文件 –><init-param><param-name>contextConfigLocation</param-name><param-value>/WEB-INF/springMVC-servlet.xml</param-value></init-param><load-on-startup>1</load-on-startup></servlet><!– Spring MVC配置文件结束 –><!– 拦截设置 –><servlet-mapping><servlet-name>MyDispatcher</servlet-name><!– 由SpringMVC拦截所有请求 –><url-pattern>/</url-pattern></servlet-mapping></web-app>(2)springMVC-servlet.xml文件<beans xmlns=""xmlns:context=""xmlns:util="" xmlns:xsi="" xmlns:p="" xmlns:mvc="" xsi:schemaLocation=""><!– 把标记了@Controller注解的类转换为bean –><context:component-scan base-package="com.mucfc" /><!– 对模型视图名称的解析,即在模型视图名称添加前后缀 –><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"p:prefix="/WEB-INF/views/" p:suffix=".jsp"/><!– 上传文件的设置 ,maxUploadSize=-1,表示无穷大。uploadTempDir为上传的临时目录 –> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"p:defaultEncoding="UTF-8"p:maxUploadSize="5400000"p:uploadTempDir="fileUpload/temp"/> </beans>三、单个文件上传

(1)控制器

@Controller@RequestMapping("/file")public class FileController {@RequestMapping("/toFile")public String toFileUpload() {return "fileUpload";}@RequestMapping("/toFile2")public String toFileUpload2() {return "fileUpload2";}/** * 方法一上传文件 */@RequestMapping("/onefile")public String oneFileUpload(@RequestParam("file") CommonsMultipartFile file,HttpServletRequest request, ModelMap model) {// 获得原始文件名String fileName = file.getOriginalFilename();System.out.println("原始文件名:" + fileName);// 新文件名String newFileName = UUID.randomUUID() + fileName;// 获得项目的路径ServletContext sc = request.getSession().getServletContext();// 上传位置String path = sc.getRealPath("/img") + "/"; // 设定文件保存的目录File f = new File(path);if (!f.exists())f.mkdirs();if (!file.isEmpty()) {try {FileOutputStream fos = new FileOutputStream(path + newFileName);InputStream in = file.getInputStream();int b = 0;while ((b = in.read()) != -1) {fos.write(b);}fos.close();in.close();} catch (Exception e) {e.printStackTrace();}}System.out.println("上传图片到:" + path + newFileName);// 保存文件地址,用于JSP页面回显model.addAttribute("fileUrl", path + newFileName);return "fileUpload";}/** * 方法二上传文件,一次一张 */@RequestMapping("/onefile2")public String oneFileUpload2(HttpServletRequest request,HttpServletResponse response) throws Exception {CommonsMultipartResolver cmr = new CommonsMultipartResolver(request.getServletContext());if (cmr.isMultipart(request)) {MultipartHttpServletRequest mRequest = (MultipartHttpServletRequest) (request);Iterator<String> files = mRequest.getFileNames();while (files.hasNext()) {MultipartFile mFile = mRequest.getFile(files.next());if (mFile != null) {String fileName = UUID.randomUUID()+ mFile.getOriginalFilename();String path = "d:/upload/" + fileName;File localFile = new File(path);mFile.transferTo(localFile);request.setAttribute("fileUrl", path);}}}return "fileUpload";}}(2)JSP,这个页面是用来上传又用来显示上传后的图片的页面fileUpload.jsp<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><%@ taglib prefix="form" uri=""%><%String path = request.getContextPath();String basePath = request.getScheme() + "://"+ request.getServerName() + ":" + request.getServerPort()+ path + "/";%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" ""><html><head><title>用户上传图片页面</title> <base href="<%=basePath%>"><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></head><body><center><form action="file/onefile"method="post" enctype="multipart/form-data"><input type="file" name="file" /><input type="submit" value="上 传" /></form><h5>上传结果:</h5><img alt="暂无图片" src="${fileUrl}" /></center></body></html>

现在运行后来看看效果,输入::8080/SpringMVCLearningChapter4_1/file/toFile

控制台输出结果,选择图片后

抱最大的希望,为最大的努力,做最坏的打算

SpringMVC单文件上传、多文件上传、文件列表显示、文件下载

相关文章:

你感兴趣的文章:

标签云: