文件上传有很多中方式,之前写过一个利用DiskFileItemFactory实现文件上传的例子,这次项目中使用了新的方式,通过MultipartHttpServletRequ
输出方式一:
<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