首页 > 代码库 > 利用Spring处理文件上传

利用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

利用Spring处理文件上传