摘要:SpringMvc中的单多文件上传及文件下载:(以下是核心代码(拿过去直接能用)不谢)

  1. <!--设置文件上传需要的jar-->
  2. <dependency>
  3. <groupId>commons-fileupload</groupId>
  4. <artifactId>commons-fileupload</artifactId>
  5. <version>1.3.1</version>
  6. </dependency>

ControllerWelcome 控制器类:

  1. package controller;
  2. import bean.User;
  3. import org.apache.commons.io.FileUtils;
  4. import org.apache.commons.lang3.RandomUtils;
  5. import org.springframework.http.HttpHeaders;
  6. import org.springframework.http.HttpStatus;
  7. import org.springframework.http.MediaType;
  8. import org.springframework.http.ResponseEntity;
  9. import org.springframework.stereotype.Controller;
  10. import org.springframework.validation.BindingResult;
  11. import org.springframework.validation.annotation.Validated;
  12. import org.springframework.web.bind.annotation.RequestMapping;
  13. import org.springframework.web.bind.annotation.RequestMethod;
  14. import org.springframework.web.bind.annotation.RequestParam;
  15. import org.springframework.web.bind.annotation.ResponseBody;
  16. import org.springframework.web.multipart.MultipartFile;
  17. import org.springframework.web.servlet.ModelAndView;
  18.  
  19. import javax.servlet.http.HttpSession;
  20. import java.io.File;
  21. import java.io.IOException;
  22. import java.lang.reflect.Field;
  23. import java.text.SimpleDateFormat;
  24. import java.util.ArrayList;
  25. import java.util.Date;
  26. import java.util.List;
  27. /**
  28. * @author asus
  29. */
  30. @Controller
  31. @RequestMapping("/user")
  32. public class ControllerWelcome {
  33.  
  34.   //单文件上传(User对象的属性名与表单中的name名一致方可自动映射到值)
  35. @RequestMapping("/upload")
  36. public ModelAndView upload(User user, MultipartFile picPath, HttpSession session) {
  37. ModelAndView modelAndView = new ModelAndView("Welcome");
  38. //获取服务器路径
  39. String realPath = session.getServletContext().getRealPath("/upload/");
  40. //判断是否存在,不存在则创建
  41. File file = new File(realPath);
  42. if (!file.exists()) {
  43. file.mkdir();
  44. }
  45. //获取源文件名称
  46. String originalFilename = picPath.getOriginalFilename();
  47. String fileName = System.currentTimeMillis() + RandomUtils.nextInt(0, 1000000) + originalFilename;
  48. File file1 = new File(realPath, fileName);
  49. try {
  50. picPath.transferTo(file1);
  51. System.out.println("用户名为:" + user.getUseName());
  52. System.out.println("上传成功:" + realPath);
  53. } catch (IOException e) {
  54. e.printStackTrace();
  55. }
  56. return modelAndView;
  57. }
  58.   //多文件上传(User对象中的属性名与表单的name名一致方可自动映射到值)
  59. @RequestMapping("/uploads")
  60. public ModelAndView uploads(User user, @RequestParam MultipartFile[] picPath, HttpSession session) {
  61. ModelAndView modelAndView = new ModelAndView("Welcome");
  62. //获取服务器路径
  63. String realPath = session.getServletContext().getRealPath("/upload/");
  64. //判断是否存在,不存在则创建
  65. File file = new File(realPath);
  66. if (!file.exists()) {
  67. file.mkdir();
  68. }
  69. for (MultipartFile temp : picPath) {
  70. //获取源文件名称
  71. String originalFilename = temp.getOriginalFilename();
  72. String fileName = System.currentTimeMillis() + RandomUtils.nextInt(0, 1000000) + originalFilename;
  73. File file1 = new File(realPath, fileName);
  74. try {
  75. temp.transferTo(file1);
  76. System.out.println("用户名为:" + user.getUseName());
  77. System.out.println("上传成功:" + realPath);
  78. } catch (IOException e) {
  79. e.printStackTrace();
  80. }
  81. }
  82. return modelAndView;
  83. }
  84.  
  85. //文件下载
  86. @RequestMapping(value = "/download", method = RequestMethod.GET) //匹配的是href中的download请求
  87. public ResponseEntity<byte[]> download(@RequestParam("filename") String filename
  88. ) throws IOException {
  89. //从我们的上传文件夹中去取
  90. String downloadFilePath = "E:\\idealCase\\CourseNotes\\SpringMvcCase\\SpringMvcCode06\\target\\SpringMvcCode06\\upload";
  91. //新建一个文件
  92. File file = new File(downloadFilePath + File.separator + filename);
  93. //http头信息
  94. HttpHeaders headers = new HttpHeaders();
  95. //设置编码
  96. String downloadFileName = new String(filename.getBytes("UTF-8"), "iso-8859-1");
  97.  
  98. headers.setContentDispositionFormData("attachment", downloadFileName);
  99.  
  100. headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
  101.  
  102. //MediaType:互联网媒介类型 contentType:具体请求中的媒体类型信息
  103.  
  104. return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file),
  105. headers, HttpStatus.CREATED);
  106.  
  107. }
  108. }

核心配置文件:Spring-view.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:context="http://www.springframework.org/schema/context"
  5. xmlns:aop="http://www.springframework.org/schema/aop"
  6. xmlns:tx="http://www.springframework.org/schema/tx"
  7. xmlns:mvc="http://www.springframework.org/schema/mvc"
  8. xsi:schemaLocation="
  9. http://www.springframework.org/schema/beans
  10. http://www.springframework.org/schema/beans/spring-beans.xsd
  11. http://www.springframework.org/schema/context
  12. http://www.springframework.org/schema/context/spring-context.xsd
  13. http://www.springframework.org/schema/tx
  14. http://www.springframework.org/schema/tx/spring-tx.xsd
  15. http://www.springframework.org/schema/aop
  16. http://www.springframework.org/schema/aop/spring-aop.xsd
  17. http://www.springframework.org/schema/mvc
  18. http://www.springframework.org/schema/mvc/spring-mvc.xsd">
  19.  
  20. <!--指定Controller扫描器-->
  21. <context:component-scan base-package="controller"/>
  22. <!--配置试图解析器-->
  23. <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  24. <property name="prefix" value="/"></property>
  25. <property name="suffix" value=".jsp"></property>
  26. </bean>
  27.  
  28. <!--配置文件上传解析器-->
  29. <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
  30. <property name="defaultEncoding" value="UTF-8"/>
  31. <!--单个文件大小-->
  32. <property name="maxUploadSizePerFile" value="100000"/>
  33. <!--文件总大小-->
  34. <property name="maxUploadSize" value="100000"/>
  35. </bean>
  36.  
  37. </beans>

web.xml 配置文件:

  1. <!DOCTYPE web-app PUBLIC
  2. "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
  3. "http://java.sun.com/dtd/web-app_2_3.dtd" >
  4.  
  5. <web-app>
  6. <display-name>Archetype Created Web Application</display-name>
  7. <!--设置乱码-->
  8. <filter>
  9. <filter-name>encodingFilter</filter-name>
  10. <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
  11. <init-param>
  12. <param-name>encoding</param-name>
  13. <param-value>UTF-8</param-value>
  14. </init-param>
  15. <init-param>
  16. <param-name>forceEncoding</param-name>
  17. <param-value>true</param-value>
  18. </init-param>
  19. </filter>
  20. <filter-mapping>
  21. <filter-name>encodingFilter</filter-name>
  22. <url-pattern>/*</url-pattern>
  23. </filter-mapping>
  24. <!--设置核心控制器-->
  25. <servlet>
  26. <servlet-name>mvc</servlet-name>
  27. <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  28. <init-param>
  29. <param-name>contextConfigLocation</param-name>
  30. <param-value>classpath*:Spring-*.xml</param-value>
  31. </init-param>
  32. <!--优先加载-->
  33. <load-on-startup>1</load-on-startup>
  34. </servlet>
  35. <servlet-mapping>
  36. <servlet-name>mvc</servlet-name>
  37. <url-pattern>/</url-pattern>
  38. </servlet-mapping>
  39. </web-app>

index.jsp 前端页面:

  1. <%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
  2. <html>
  3. <body>
  4. <h2>Hello World!</h2>
  5. <fieldset>
  6. <legend>单文件上传:</legend>
  7. <form action="/user/upload" method="post" enctype="multipart/form-data">
  8. 用户名:<input type="text" name="useName"><br/>
  9. 文件一:<input type="file" name="picPath">
  10. <input type="submit" value="提交">
  11. </form>
  12. </fieldset>
  13. <br/><br/>
  14. <fieldset>
  15. <legend>多文件上传:</legend>
  16. <form action="/user/uploads" method="post" enctype="multipart/form-data">
  17. 用户名:<input type="text" name="useName"><br/>
  18. 文件一:<input type="file" name="picPath">
  19. 文件一:<input type="file" name="picPath">
  20. <input type="submit" value="提交">
  21. </form>
  22. </fieldset>
  23. <br/><br/>
  24. <fieldset>
  25. <legend>文件下载</legend>
  26. <a href="/user/download?filename=1537854894247新建文本文档.txt">
  27. 文件下载:1537854894247新建文本文档.txt</a>
  28. </fieldset>
  29. </body>
  30. </html>

分享知识-快乐自己:SpringMvc中的单多文件上传及文件下载的更多相关文章

  1. SpringMVC中使用 MultipartFile 进行文件上传下载及删除

    一:引入必要的包 <!--文件上传--> <!-- https://mvnrepository.com/artifact/commons-fileupload/commons-fil ...

  2. SpringMVC中使用CommonsMultipartResolver进行文件上传

    概述: CommonsMultipartResolver是基于Apache的Commons FileUpload来实现文件上传功能的.所以在项目中需要相应的jar文件. FileUpload版本要求1 ...

  3. Struts2文件上传(基于表单的文件上传)

    •Commons-FileUpload组件 –Commons是Apache开放源代码组织的一个Java子项目,其中的FileUpload是用来处理HTTP文件上传的子项目   •Commons-Fil ...

  4. [原创]java WEB学习笔记49:文件上传基础,基于表单的文件上传,使用fileuoload 组件

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

  5. SpringMVC(四)-- springmvc的系统学习之文件上传、ajax&json处理

    资源:尚学堂 邹波 springmvc框架视频 一.文件上传 1.步骤: (1)导入jar包 commons-fileupload,commons-io (2)在springmvc的配置文件中配置解析 ...

  6. zt对于C#中的FileUpload解决文件上传大小限制的问题设置

    对于C#中的FileUpload解决文件上传大小限制的问题设置 您可能没意识到,但对于可以使用该技术上载的文件的大小存在限制.默认情况下,使用 FileUpload 控件上载到服务器的文件最大为 4M ...

  7. SpringMVC之单/多文件上传

    1.准备jar包(图标所指必备包,其他按情况导入) 2.项目结构 3.SingleController.java(控制器代码单文件和多文件) package com.wt.uplaod; import ...

  8. 分享知识-快乐自己:Struts2文件上传及文件下载

    1)Struts2单文件上传 action:类文件 package com.mlq.action; import com.opensymphony.xwork2.ActionSupport; impo ...

  9. SpringMVC(三)-- 视图和视图解析器、数据格式化标签、数据类型转换、SpringMVC处理JSON数据、文件上传

    1.视图和视图解析器 请求处理方法执行完成后,最终返回一个 ModelAndView 对象 对于那些返回 String,View 或 ModeMap 等类型的处理方法,SpringMVC 也会在内部将 ...

随机推荐

  1. distinct 与order by 一起用

    distinct 后面不要直接跟Order by , 如果要用在子查询用用order by .

  2. 常用组件介绍 ---- Layout_weight

      下面这些也可以算是组件 文本区 TextView 文本框 EditText layout  容器 view     千万不要把Layout_weight 与 Layout_width相混淆**** ...

  3. &lt;LeetCode OJ&gt; 189. Rotate Array

    189. Rotate Array Total Accepted: 55073 Total Submissions: 278176 Difficulty: Easy Rotate an array o ...

  4. 阿里云 RDS实例间的数据迁移

    使用数据传输DTS可以实现两个RDS实例间的数据迁移.对于支持增量迁移的存储引擎,还可以使用DTS在源RDS实例不停服的情况下,将数据迁移到目标RDS实例.目前对于RDS不同存储引擎,只支持同构迁移( ...

  5. 各种常用的CDN加速服务

    各种CDN加速网址:点击此处 1.Echar <script type="text/javascript" src="http://echarts.baidu.co ...

  6. 【Sprint3冲刺之前】TD学生助手——alpha版发布

    TD学生助手——alpha版发布 1.设想和目标  1.我们的软件要解决的问题 TD学生助手的主要核心思想就是帮助学生安排他们忙碌的学校生活.主要是通过以下几个方面 1.通过学生的需要进行分类(考试, ...

  7. 在tomcat中用jndi配置数据源启动java web程序

    1.在web.xml中添加: <resource-ref>    <res-ref-name>jdbc/MTSDB</res-ref-name>    <re ...

  8. linux下开启ftp的21号port

    1.先执行vsftpd服务: #service vsftpd start 2.通过iptables开放21号port (1) 先查看iptables设置: #iptables -nL Chain IN ...

  9. Java正确获取客户端真实IP方法整理

    在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的.但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实I ...

  10. VC项目文件说明

    .dsp   项目参数配置文件,这个文件太重要,重点保护对象.. .dsw   工作区文件,重要性一般,因为它信息不我,容易恢复.   以下文件在项目中是可丢弃的,有些文件删除后,VC会自动生成的. ...