在web项目中会遇到的问题:文件上传

  文件上传在前端页面的设置:form表单 设置 input 类型

    文件上传的请求方式要使用post,要将enctype设置为multipart/form-data   ;  Input的类型设为file

<form action="UploadServlet" method="post" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit">
</form>

1、  使用CommonsMultipartResolver方式上传文件

    所需的第三方依赖

      commons-fileupload:commons-fileupload:1.3.1

      commons-io:commons-io:2.4

    在SpringMVC.xml 文件中配置文件处理 对象

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="defaultEncoding" value="utf-8" />
<property name="maxUploadSize" value="10485760000" />
<property name="maxInMemorySize" value="40960" />
</bean>

    然后在Controller的处理方法中:通过MultipartFile或者CommonsMultipartFile类型参数来接收客户端发送的文件数据,通过其transferTo方法写文件

@RequestMapping("/upload.action")
public String upload(Model model,MultipartFile file){
    //查看得到文件的相关属性
// if(file!=null){
// System.out.println(file.getContentType());
// System.out.println(file.getOriginalFilename());
// System.out.println(file.getSize());
// model.addAttribute("file", file.getOriginalFilename());
// } try {
file.transferTo(new File("D:/"+UUID.randomUUID()+".jpg"));//用file.transferTo("fileURL")方法来对上传文件进行存储
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} return "index";
}

2、使用StandardServletMultipartResolver方式文件上传,使用的servlet3.0文件上传的技术,不需要使用第三方包

  文件处理器的配置(SpringMVC中)

<bean id="multipartResolver" class="org.springframework.web.multipart.support.StandardServletMultipartResolver"/> 

  文件上传的相关设置 在 web.xml中设置

<multipart-config>
<max-file-size>5242880</max-file-size> <!--单个文件最大大小:5MB-->
<max-request-size>20971520</max-request-size> <!--所有文件最大大小:20MB-->
<file-size-threshold>0</file-size-threshold> <!-- 超过这个大小直接存硬盘,而不是内存 -->
</multipart-config>

  请求的处理方法

    通过request获取Part,通过Part的write方法写文件(保存文件)

@RequestMapping("/upload2.action")
public String upload2(HttpServletRequest request){
try {
//从request中获取part
List<Part> parts = (List<Part>) request.getParts();
//每一个part可以对每一个上传的文件进行处理
Part part = parts.get(0);
//通过part存储文件
part.write("D:/"+UUID.randomUUID());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ServletException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return "index";
}

3、多文件上传

  

@RequestMapping("/upload.action")
public String upload(Model model,MultipartFile[] files){       for (MultipartFile multipartFile : multipartFiles) {  

    System.out.println(multipartFile.getName() + "-----" + multipartFile.getOriginalFilename());

    ModelMap uploadOne = uploadOne(multipartFile); //调用单个文件的处理方法

  }

}    

SpringMVC 学习笔记(文件的上传和下载)的更多相关文章

  1. SpringMVC+Ajax实现文件批量上传和下载功能实例代码

    需求: 文件批量上传,支持断点续传. 文件批量下载,支持断点续传. 使用JS能够实现批量下载,能够提供接口从指定url中下载文件并保存在本地指定路径中. 服务器不需要打包. 支持大文件断点下载.比如下 ...

  2. Struts2基础学习(六)—文件的上传和下载

    一.文件的上传 1.单个文件上传      Struts2使用拦截器完成了文件的上传,而且底层使用的也是FileUpload开源组件. 客户端注意事项: (1)method="post&qu ...

  3. 【JavaWeb学习】文件的上传和下载

    一.文件上传 1.1.概述 实现web开发中的文件上传功能,需完成如下二步操作: 在web页面中添加上传输入项 在servlet中读取上传文件的数据,并保存到本地硬盘中 如何在web页面中添加上传输入 ...

  4. 在SpringMVC框架下实现文件的 上传和 下载

    在eclipse中的javaEE环境下:导入必要的架包 web.xml的配置文件: <?xml version="1.0" encoding="UTF-8" ...

  5. 文件的上传和下载--SpringMVC

    文件的上传和下载是项目开发中最常用的功能,例如图片的上传和下载.邮件附件的上传和下载等. 接下来,将对Spring MVC环境中文件的上传和下载进行详细的讲解. 一.文件上传 多数文件上传都是通过表单 ...

  6. 使用FTPClient进行文件服务器内文件的上传和下载

    我用的FTPClient是由Apache组织的commons-net.jar包中的API,这个包用起来非常的方便,很容易上手.我在项目开发的过程中主要用到了文件的上传和下载功能,下面将我开发的代码贴出 ...

  7. 初学Java Web(7)——文件的上传和下载

    文件上传 文件上传前的准备 在表单中必须有一个上传的控件 <input type="file" name="testImg"/> 因为 GET 方式 ...

  8. Spring MVC 实现文件的上传和下载 (八)

    完整的项目案例: springmvc.zip 目录 SpringMVC 中,文件的上传,是通过 MultipartResolver 实现的. 所以,如果要实现文件的上传,只要在 spring-mvc. ...

  9. Spring MVC 实现文件的上传和下载

    前些天一位江苏经贸的学弟跟我留言问了我这样一个问题:“用什么技术来实现一般网页上文件的上传和下载?是框架还是Java中的IO流”.我回复他说:“使用Spring MVC框架可以做到这一点,因为Spri ...

随机推荐

  1. 为什么下了android 4.1 的SDK后在本地用浏览器看api说明文档时,浏览器打开api的html文件很慢?试了好几款浏览器都一样。为什么?

    http://www.oschina.net/question/436724_61401 http://www.google.com/jsapi  他惹的祸 注释掉就可以了- <!-- < ...

  2. MySQL root 密码重置

    安全模式重置法 基本的思路是,以安全模式启动mysql,这样不需要密码可以直接以root身份登录,然后重设密码. 1. 停止 MySQL 服务 [molo.wu@shark mysql (master ...

  3. IAR 条件断点

    条件断点是IDE的一个重要功能,在IAR调试时候,经常跟踪一个数据,但是对较大的buffer,用普通的断点或live watch都不好跟踪. 比如某个buffer里一个数,我们知道他在第几个,但是却从 ...

  4. 326 集合 ,数据类型的补充 ,copy , 编码之间的转换

    一.数据类型补充1,对于元组:如果只有一个元素,并且没有逗号,此元素是什么数据类型,改表达式就是什么数据类型. tu = () tu1 = (,) print(tu,type(tu)) #1 < ...

  5. 广义表(C++实现)

    广义表是非线性结构,其定义是递归的. 以下给出几种简单的广义表模型: 由上图我们可以看到,广义表的节点类型无非head.value.sub三种,这里设置枚举类型,利用枚举变量来记录每个节点的类型: e ...

  6. LINQ 学习路程 -- 查询操作 Select, SelectMany

    IList<Student> studentList = new List<Student>() { , StudentName = "John" }, , ...

  7. 算法(Algorithms)第4版 练习 2.3.25

      代码实现: public static void sort(Comparable[] a) { StdRandom.shuffle(a);//eliminate dependence on inp ...

  8. Oracle的基本操作

    一.ORACLE的启动和关闭 1.在单机环境下 要想启动或关闭ORACLE系统必须首先切换到ORACLE用户,如下 su - oracle a.启动ORACLE系统 oracle>svrmgrl ...

  9. Spark集群搭建(local、standalone、yarn)

    Spark集群搭建 local本地模式 下载安装包解压即可使用,测试(2.2版本)./bin/spark-submit --class org.apache.spark.examples.SparkP ...

  10. Hive报错 Failed with exception java.io.IOException:java.lang.IllegalArgumentException: java.net.URISyntaxException: Relative path in absolute URI: ${system:user.name%7D

    报错信息如下 Failed with exception java.io.IOException:java.lang.IllegalArgumentException: java.net.URISyn ...