我们在做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(); }