分享知识-快乐自己:SpringMvc中的单多文件上传及文件下载
摘要:SpringMvc中的单多文件上传及文件下载:(以下是核心代码(拿过去直接能用)不谢)
- <!--设置文件上传需要的jar-->
- <dependency>
- <groupId>commons-fileupload</groupId>
- <artifactId>commons-fileupload</artifactId>
- <version>1.3.1</version>
- </dependency>
ControllerWelcome 控制器类:
- package controller;
- import bean.User;
- import org.apache.commons.io.FileUtils;
- import org.apache.commons.lang3.RandomUtils;
- import org.springframework.http.HttpHeaders;
- import org.springframework.http.HttpStatus;
- import org.springframework.http.MediaType;
- import org.springframework.http.ResponseEntity;
- import org.springframework.stereotype.Controller;
- import org.springframework.validation.BindingResult;
- import org.springframework.validation.annotation.Validated;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.RequestMethod;
- import org.springframework.web.bind.annotation.RequestParam;
- import org.springframework.web.bind.annotation.ResponseBody;
- import org.springframework.web.multipart.MultipartFile;
- import org.springframework.web.servlet.ModelAndView;
- import javax.servlet.http.HttpSession;
- import java.io.File;
- import java.io.IOException;
- import java.lang.reflect.Field;
- import java.text.SimpleDateFormat;
- import java.util.ArrayList;
- import java.util.Date;
- import java.util.List;
- /**
- * @author asus
- */
- @Controller
- @RequestMapping("/user")
- public class ControllerWelcome {
- //单文件上传(User对象的属性名与表单中的name名一致方可自动映射到值)
- @RequestMapping("/upload")
- public ModelAndView upload(User user, MultipartFile picPath, HttpSession session) {
- ModelAndView modelAndView = new ModelAndView("Welcome");
- //获取服务器路径
- String realPath = session.getServletContext().getRealPath("/upload/");
- //判断是否存在,不存在则创建
- File file = new File(realPath);
- if (!file.exists()) {
- file.mkdir();
- }
- //获取源文件名称
- String originalFilename = picPath.getOriginalFilename();
- String fileName = System.currentTimeMillis() + RandomUtils.nextInt(0, 1000000) + originalFilename;
- File file1 = new File(realPath, fileName);
- try {
- picPath.transferTo(file1);
- System.out.println("用户名为:" + user.getUseName());
- System.out.println("上传成功:" + realPath);
- } catch (IOException e) {
- e.printStackTrace();
- }
- return modelAndView;
- }
- //多文件上传(User对象中的属性名与表单的name名一致方可自动映射到值)
- @RequestMapping("/uploads")
- public ModelAndView uploads(User user, @RequestParam MultipartFile[] picPath, HttpSession session) {
- ModelAndView modelAndView = new ModelAndView("Welcome");
- //获取服务器路径
- String realPath = session.getServletContext().getRealPath("/upload/");
- //判断是否存在,不存在则创建
- File file = new File(realPath);
- if (!file.exists()) {
- file.mkdir();
- }
- for (MultipartFile temp : picPath) {
- //获取源文件名称
- String originalFilename = temp.getOriginalFilename();
- String fileName = System.currentTimeMillis() + RandomUtils.nextInt(0, 1000000) + originalFilename;
- File file1 = new File(realPath, fileName);
- try {
- temp.transferTo(file1);
- System.out.println("用户名为:" + user.getUseName());
- System.out.println("上传成功:" + realPath);
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- return modelAndView;
- }
- //文件下载
- @RequestMapping(value = "/download", method = RequestMethod.GET) //匹配的是href中的download请求
- public ResponseEntity<byte[]> download(@RequestParam("filename") String filename
- ) throws IOException {
- //从我们的上传文件夹中去取
- String downloadFilePath = "E:\\idealCase\\CourseNotes\\SpringMvcCase\\SpringMvcCode06\\target\\SpringMvcCode06\\upload";
- //新建一个文件
- File file = new File(downloadFilePath + File.separator + filename);
- //http头信息
- HttpHeaders headers = new HttpHeaders();
- //设置编码
- String downloadFileName = new String(filename.getBytes("UTF-8"), "iso-8859-1");
- headers.setContentDispositionFormData("attachment", downloadFileName);
- headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
- //MediaType:互联网媒介类型 contentType:具体请求中的媒体类型信息
- return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file),
- headers, HttpStatus.CREATED);
- }
- }
核心配置文件:Spring-view.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns:context="http://www.springframework.org/schema/context"
- xmlns:aop="http://www.springframework.org/schema/aop"
- xmlns:tx="http://www.springframework.org/schema/tx"
- xmlns:mvc="http://www.springframework.org/schema/mvc"
- xsi:schemaLocation="
- http://www.springframework.org/schema/beans
- http://www.springframework.org/schema/beans/spring-beans.xsd
- http://www.springframework.org/schema/context
- http://www.springframework.org/schema/context/spring-context.xsd
- http://www.springframework.org/schema/tx
- http://www.springframework.org/schema/tx/spring-tx.xsd
- http://www.springframework.org/schema/aop
- http://www.springframework.org/schema/aop/spring-aop.xsd
- http://www.springframework.org/schema/mvc
- http://www.springframework.org/schema/mvc/spring-mvc.xsd">
- <!--指定Controller扫描器-->
- <context:component-scan base-package="controller"/>
- <!--配置试图解析器-->
- <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
- <property name="prefix" value="/"></property>
- <property name="suffix" value=".jsp"></property>
- </bean>
- <!--配置文件上传解析器-->
- <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
- <property name="defaultEncoding" value="UTF-8"/>
- <!--单个文件大小-->
- <property name="maxUploadSizePerFile" value="100000"/>
- <!--文件总大小-->
- <property name="maxUploadSize" value="100000"/>
- </bean>
- </beans>
web.xml 配置文件:
- <!DOCTYPE web-app PUBLIC
- "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
- "http://java.sun.com/dtd/web-app_2_3.dtd" >
- <web-app>
- <display-name>Archetype Created Web Application</display-name>
- <!--设置乱码-->
- <filter>
- <filter-name>encodingFilter</filter-name>
- <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
- <init-param>
- <param-name>encoding</param-name>
- <param-value>UTF-8</param-value>
- </init-param>
- <init-param>
- <param-name>forceEncoding</param-name>
- <param-value>true</param-value>
- </init-param>
- </filter>
- <filter-mapping>
- <filter-name>encodingFilter</filter-name>
- <url-pattern>/*</url-pattern>
- </filter-mapping>
- <!--设置核心控制器-->
- <servlet>
- <servlet-name>mvc</servlet-name>
- <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
- <init-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>classpath*:Spring-*.xml</param-value>
- </init-param>
- <!--优先加载-->
- <load-on-startup>1</load-on-startup>
- </servlet>
- <servlet-mapping>
- <servlet-name>mvc</servlet-name>
- <url-pattern>/</url-pattern>
- </servlet-mapping>
- </web-app>
index.jsp 前端页面:
- <%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
- <html>
- <body>
- <h2>Hello World!</h2>
- <fieldset>
- <legend>单文件上传:</legend>
- <form action="/user/upload" method="post" enctype="multipart/form-data">
- 用户名:<input type="text" name="useName"><br/>
- 文件一:<input type="file" name="picPath">
- <input type="submit" value="提交">
- </form>
- </fieldset>
- <br/><br/>
- <fieldset>
- <legend>多文件上传:</legend>
- <form action="/user/uploads" method="post" enctype="multipart/form-data">
- 用户名:<input type="text" name="useName"><br/>
- 文件一:<input type="file" name="picPath">
- 文件一:<input type="file" name="picPath">
- <input type="submit" value="提交">
- </form>
- </fieldset>
- <br/><br/>
- <fieldset>
- <legend>文件下载</legend>
- <a href="/user/download?filename=1537854894247新建文本文档.txt">
- 文件下载:1537854894247新建文本文档.txt</a>
- </fieldset>
- </body>
- </html>
分享知识-快乐自己:SpringMvc中的单多文件上传及文件下载的更多相关文章
- SpringMVC中使用 MultipartFile 进行文件上传下载及删除
一:引入必要的包 <!--文件上传--> <!-- https://mvnrepository.com/artifact/commons-fileupload/commons-fil ...
- SpringMVC中使用CommonsMultipartResolver进行文件上传
概述: CommonsMultipartResolver是基于Apache的Commons FileUpload来实现文件上传功能的.所以在项目中需要相应的jar文件. FileUpload版本要求1 ...
- Struts2文件上传(基于表单的文件上传)
•Commons-FileUpload组件 –Commons是Apache开放源代码组织的一个Java子项目,其中的FileUpload是用来处理HTTP文件上传的子项目 •Commons-Fil ...
- [原创]java WEB学习笔记49:文件上传基础,基于表单的文件上传,使用fileuoload 组件
本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...
- SpringMVC(四)-- springmvc的系统学习之文件上传、ajax&json处理
资源:尚学堂 邹波 springmvc框架视频 一.文件上传 1.步骤: (1)导入jar包 commons-fileupload,commons-io (2)在springmvc的配置文件中配置解析 ...
- zt对于C#中的FileUpload解决文件上传大小限制的问题设置
对于C#中的FileUpload解决文件上传大小限制的问题设置 您可能没意识到,但对于可以使用该技术上载的文件的大小存在限制.默认情况下,使用 FileUpload 控件上载到服务器的文件最大为 4M ...
- SpringMVC之单/多文件上传
1.准备jar包(图标所指必备包,其他按情况导入) 2.项目结构 3.SingleController.java(控制器代码单文件和多文件) package com.wt.uplaod; import ...
- 分享知识-快乐自己:Struts2文件上传及文件下载
1)Struts2单文件上传 action:类文件 package com.mlq.action; import com.opensymphony.xwork2.ActionSupport; impo ...
- SpringMVC(三)-- 视图和视图解析器、数据格式化标签、数据类型转换、SpringMVC处理JSON数据、文件上传
1.视图和视图解析器 请求处理方法执行完成后,最终返回一个 ModelAndView 对象 对于那些返回 String,View 或 ModeMap 等类型的处理方法,SpringMVC 也会在内部将 ...
随机推荐
- distinct 与order by 一起用
distinct 后面不要直接跟Order by , 如果要用在子查询用用order by .
- 常用组件介绍 ---- Layout_weight
下面这些也可以算是组件 文本区 TextView 文本框 EditText layout 容器 view 千万不要把Layout_weight 与 Layout_width相混淆**** ...
- <LeetCode OJ> 189. Rotate Array
189. Rotate Array Total Accepted: 55073 Total Submissions: 278176 Difficulty: Easy Rotate an array o ...
- 阿里云 RDS实例间的数据迁移
使用数据传输DTS可以实现两个RDS实例间的数据迁移.对于支持增量迁移的存储引擎,还可以使用DTS在源RDS实例不停服的情况下,将数据迁移到目标RDS实例.目前对于RDS不同存储引擎,只支持同构迁移( ...
- 各种常用的CDN加速服务
各种CDN加速网址:点击此处 1.Echar <script type="text/javascript" src="http://echarts.baidu.co ...
- 【Sprint3冲刺之前】TD学生助手——alpha版发布
TD学生助手——alpha版发布 1.设想和目标 1.我们的软件要解决的问题 TD学生助手的主要核心思想就是帮助学生安排他们忙碌的学校生活.主要是通过以下几个方面 1.通过学生的需要进行分类(考试, ...
- 在tomcat中用jndi配置数据源启动java web程序
1.在web.xml中添加: <resource-ref> <res-ref-name>jdbc/MTSDB</res-ref-name> <re ...
- linux下开启ftp的21号port
1.先执行vsftpd服务: #service vsftpd start 2.通过iptables开放21号port (1) 先查看iptables设置: #iptables -nL Chain IN ...
- Java正确获取客户端真实IP方法整理
在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的.但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实I ...
- VC项目文件说明
.dsp 项目参数配置文件,这个文件太重要,重点保护对象.. .dsw 工作区文件,重要性一般,因为它信息不我,容易恢复. 以下文件在项目中是可丢弃的,有些文件删除后,VC会自动生成的. ...