1 request.setCharacterEncoding("utf-8"); 2 String uploadFileName = ""; //上传的文件名 3 String fieldName = ""; //表单字段元素的name属性值 4 //请求信息中的内容是否是multipart类型 5 boolean isMultipart = ServletFileUpload.isMultipartContent(request); 6 //上传文件的存储路径(服务器文件系统上的绝对文件路径) 7 String uploadFilePath = request.getSession().getServletContext().getRealPath("upload/" ); 8 //创建临时文件目录路径 9 File tempPatchFile=new File("d:\\temp\\buffer\\"); 10 if(!tempPatchFile.exists()) //判断文件或目录是否存在 11 tempPatchFile.mkdirs(); //创建指定的目录,包括所有必需但不存在的父目录 12 if (isMultipart) { 13 DiskFileItemFactory factory=new DiskFileItemFactory(); 14 //设置缓冲区大小4kb 15 factory.setSizeThreshold(4096); 16 //设置上传文件用到临时文件存放路径 17 factory.setRepository(tempPatchFile); 18 ServletFileUpload upload = new ServletFileUpload(factory); 19 //设置单个文件的最大限制 20 upload.setSizeMax(1024*30); 21 try { 22 //解析form表单中所有文件 23 List<FileItem> items = upload.parseRequest(request); 24 Iterator<FileItem> iter = items.iterator(); 25 while (iter.hasNext()) { //依次处理每个文件 26 FileItem item = (FileItem) iter.next(); 27 if (!item.isFormField()){ //文件表单字段 28 String fileName = item.getName(); 29 //通过Arrays类的asList()方法创建固定长度的集合 30 List<String> filType=Arrays.asList("gif","bmp","jpg"); 31 String ext=fileName.substring(fileName.lastIndexOf(".")+1); 32 if(!filType.contains(ext)) //判断文件类型是否在允许范围内 33 out.print("上传失败,文件类型只能是gif、bmp、jpg"); 34 else{ 35 if (fileName != null && !fileName.equals("")) { 36 File fullFile = new File(item.getName()); 37 File saveFile = new File(uploadFilePath, fullFile.getName()); 38 item.write(saveFile); 39 uploadFileName = fullFile.getName(); 40 out.print("上传成功后的文件名是:"+uploadFileName+ 41 ",文件大小是:"+item.getSize()+"bytes!"); 42 43 } 44 } 45 } 46 } 47 }catch(FileUploadBase.SizeLimitExceededException ex){ 48 out.print("上传失败,文件太大,单个文件的最大限制是:"+upload.getSizeMax()+"bytes!"); 49 }catch (Exception e) { 50 e.printStackTrace(); 51 } 52 } 53 54 <form action="doupload.jsp" enctype="multipart/form-data" method="post"> 55 <!--<p>姓名:<input type="text" name="user"></p> --> 56 <p>选择图片:<input type="file" name="nfile"></p> 57 <p><input type="submit" value="提交"></p> 58 </form>
时间: 2024-10-29 09:55:57