文件上传有很多中方式,之前写过一个利用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