我们在做web项目中通常会遇到上传文件的情况,用struts等框架的会直接用的自带的标签和组件,今天说的是利用servlet来完成上传。
我们这里利用到commons-fileupload组件,相关jar包可以取apache官网下载:http://commons.apache.org/
下面是servlet的代码:
//定义一个磁盘文件工厂
DiskFileItemFactory factory = new DiskFileItemFactory();
//获取ServletFileUpload的实例
ServletFileUpload fileUpload = new ServletFileUpload(factory);
//设置最大上传限制
fileUpload.setSizeMax(1024 * 1025 * 1024);
try {
//获取上传文件列表
List items = fileUpload.parseRequest(request);
Iterator iter = items.iterator();
//对文件进行迭代
while (iter.hasNext()) {
//获取每一个上传文件
FileItem item = (FileItem) iter.next();
if (item.isFormField()) {
String name = item.getFieldName();
String value = item.getString();
System.out.println(name + ":" + value);
} else {
String fieldName = item.getFieldName();
String fileName = item.getName();
String contentType = item.getContentType();
boolean isInMemory = item.isInMemory();
long sizeInBytes = item.getSize();
String path = getServletContext().getRealPath("/");
//将文件写入磁盘
File uploadedFile = new File(path + +new Random().nextInt(Integer.MAX_VALUE) + "_" + fileName);
item.write(uploadedFile);
}
}
} catch (FileUploadException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}