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

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值