利用Spring处理文件上传

文件上传有很多中方式,之前写过一个利用DiskFileItemFactory实现文件上传的例子,这次项目中使用了新的方式,通过MultipartHttpServletRequest来获取文件流,下面是我的一个DEMO:

输出方式一:

<span style="white-space:pre">		</span>//对request进行包装
		MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
		//根据名称获取MultipartFile文件对象
		MultipartFile headFile = multipartRequest.getFile("headFile");

		logger.debug("--------------------------------------------->file operation starting...");
		logger.debug("----------------->headFile:"+headFile.getName()+
				"\ttype:"+headFile.getContentType()+"\tsize:"+headFile.getSize());

		//获取文件流
		FileInputStream headIn = (FileInputStream) headFile.getInputStream();
		FileOutputStream headOut = new FileOutputStream("d:/headFile.jpeg");
		byte[] bytes = new byte[1024];
		do{
			headIn.read(bytes,0,1024);
			headOut.write(bytes);
		}while(headIn.available() > 0);
		headIn.close();
		headOut.close();
		logger.debug("--------------------------------------------->file operation success!!!");

文件上传到了指定目录下了!

使用过的朋友可能会问到了,为什么不用另一种更简单的方式呢?别急,下面我们看MultipartFile自带的输出方法。

输出方式二:

<span style="white-space:pre">		</span>//对request进行包装
		MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
		//根据名称获取MultipartFile文件对象
		MultipartFile headFile = multipartRequest.getFile("headFile");

		logger.debug("--------------------------------------------->file operation starting...");
		logger.debug("----------------->headFile:"+headFile.getName()+
				"\ttype:"+headFile.getContentType()+"\tsize:"+headFile.getSize());
		//直接输出到执行的目录下
		headFile.transferTo(new File("d:/little bear.jpeg"));

看到了吧,同样的,文件上传了╮(╯▽╰)╭很简单吧!

下面我们看看MultipartFile这个接口源码:

interface MultipartFile {

<span style="white-space:pre">	</span>public byte[] getBytes();

<span style="white-space:pre">	</span>public String getContentType();

<span style="white-space:pre">	</span>public java.io.InputStream getInputStream();

<span style="white-space:pre">	</span>public String getName();

<span style="white-space:pre">	</span>public String getOriginalFilename();

<span style="white-space:pre">	</span>public long getSize();

<span style="white-space:pre">	</span>public boolean isEmpty();

<span style="white-space:pre">	</span>public void transferTo(java.io.File dest);

}

在MultipartFile接口中定义了如下很多有用的方法。

l、使用getSize()方法获得文件长度,以此决定允许上传的文件大小。

2、使用isEmpty()方法判断上传文件是否为空文件,以此决定是否拒绝空文件。

3、使用getInputStream()方法将文件读取为java.io.InputStream流对象。

4、使用getContentType()方法获得文件类型,以此决定允许上传的文件类型。

5、使用transferTo(dest)方法将上传文件写到服务器上指定的文件。

利用这些方法组合我们可以对上传的文件进行限制,举一反三不讲解了,仅此抛个砖╮(╯▽╰)╭

作者:伫望碧落 出处:http://blog.csdn.net/cl05300629

时间: 2024-10-12 19:19:14

利用Spring处理文件上传的相关文章

Spring的文件上传

Spring在发现包含multipart的请求后,会使用MultipartResolver的实现bean处理文件上传操作,现有采用Servlet3的 org.springframework.web.multipart.support.StandardServletMultipartResolver 和采用commons-fileupload的 org.springframework.web.multipart.commons.CommonsMultipartResolver 处理文件的上传需要重

spring实现文件上传(图片解析)

合抱之木,生于毫末,千里之行,始于足下,要想了解spring的文件上传功能,首先要知道spring是通过流的方式将文件进行解析,然后上传.那么是不是所有需要用的文件上传的地方都要写一遍文件解析器呢? 放心,spring这个大管家已经为我们做好了一切! 我们只需要在spring的配置文件中加入下面代码: <!-- 文件上传解析器 --> <bean id="multipartResolver" class="org.springframework.web.mu

Spring MVC文件上传出现错误:Required MultipartFile parameter &#39;file&#39; is not present

1.配置文件上传的解析器 首先需要在spring mvc的配置文件中(注意是spring mvc的配置文件而不是spring的配置文件:applicationContext.xml)配置: springmvc-config.xml <!-- 文件上传bean--> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartReso

简单利用filetype进行文件上传

对于文件上传大家都很熟悉了,毕竟文件上传是获取webshell的一个重要方式之一,理论性的东西参考我的另一篇汇总文章<浅谈文件解析及上传漏洞>,这里主要是实战补充一下理论内容--filetype漏洞! filetype漏洞主要是针对content-type字段,主要有两种利用方式:    1.先上传一个图片,然后将content-type:image/jpeg改为content-type:text/asp,然后对filename进行00截断,将图片内容替换为一句话木马. 2.直接使用burp抓

Spring MVC 文件上传

1.form的enctype=”multipart/form-data” 这个是上传文件必须的 2.applicationContext.xml中 <bean id=”multipartResolver” class=”org.springframework.web.multipart.commons.CommonsMultipartResolver”/> 关于文件上传的配置不能少 3.需要commons.fileupload和commons.io的jar包 Spring的配置文件 <!

selenium+java利用AutoIT实现文件上传

1.AutoIT介绍 AutoIT是一个类似脚本语言的软件,利用此软件我们可以方便的实现模拟键盘.鼠标.窗口等操作,实现自动化. 2.实现原理 利用AutoIT编写合适的脚本,然后将脚本编译成可执行文件,在自动化实现时,直接调用此脚本实现文件上传. 备注:编写脚本和编译,需要借助AutoIT提供的工具,但是脚本编译成可执行文件后,可以直接使用,不再需要安装AutoIT. 3.自动化调用 AutoIT脚本编译成可执行文件后,放到本地的某一个目录下 自动化实现过程中,需要上传图片时,首先定位到[上传

spring mvc文件上传

1.配置spring mvc配置文件 <!-- SpringMVC上传文件时,需要配置MultipartResolver处理器 --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <property name="defaultEncoding" valu

Spring MVC文件上传和下载

在Spring MVC中有两种实现上传文件的办法,第一种是Servlet3.0以下的版本通过commons-fileupload与commons-io完成的通用上传,第二种是Servlet3.0以上的版本的Spring内置标准上传,不需借助第3方组件.通用上传也兼容Servlet3.0以上的版本 Servlet3.0以下的通过commons-fileupload上传 1.添加上传依赖包 一个是文件上传的jar包,一个是其所依赖的IO包.这两个jar包,均在Spring支持库的org.apache

Spring mvc文件上传与下载

文件上传 SpringMVC实现文件上传,需要再添加两个jar包.一个是文件上传的jar包,一个是其所依赖的IO包.这两个jar包,均在Spring支持库的org.apache.commons中. 单文件上传 jsp页面 <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <% String path = request.getContextP