<form action="<%=path%>/servlet/RegisterServlet" method="post" enctype="multipart/form-data" > <table> <tr> <td>照片</td> <td><input type="file" name="photo" /></td> </tr> <tr> <td><input type="submit" value="注册" /></td> <td> </td> </tr> </table> </form>
//获得文件项的工厂类 FileItemFactory factory = new DiskFileItemFactory(); //通过工厂类创建一个Servlet文件上传类 ServletFileUpload upload = new ServletFileUpload(factory); try { //把请求中的每个数据读取出来,并且封装成FileItem对象,然后存入List集合里面 List<FileItem> items = upload.parseRequest(request); for(FileItem item:items){ //非常规表单,即上传表单 if(!item.isFormField()){ //getRealPath这个方法返回uploadfile这个文件夹在当前web项目下的绝对路径 String folder=request.getRealPath("uploadfile"); //得到文件的大小,单位是byte long filesize=item.getSize(); System.out.println("folder: "+folder); System.out.println("filename: "+filename); System.out.println("filesize: "+filesize); if(filesize>0){ //构造这个文件,这个时候此文件还并不存在 File file=new File(folder+File.separator+filename); //用这个文件对象填充上面的file对象 item.write(file); } } } } catch (Exception e) { e.printStackTrace(); }
<form action="<%=path%>/servlet/RegisterServlet" method="post" enctype="multipart/form-data" > <table> <tr> <td>姓名</td><td><input type="text" name="username" /></td> </tr> <tr> <td>住址</td><td><input type="text" name="address" /></td> </tr> <tr> <td>照片</td> <td><input type="file" name="photo" /></td> </tr> <tr> <td><input type="submit" value="注册" /></td> <td> </td> </tr> </table> </form>
//获得文件项的工厂类 FileItemFactory factory = new DiskFileItemFactory(); //通过工厂类创建一个Servlet文件上传类 ServletFileUpload upload = new ServletFileUpload(factory); try { //把请求中的每个数据读取出来,并且封装成FileItem对象,然后存入List集合里面 List<FileItem> items = upload.parseRequest(request); for(FileItem item:items){ //非常规表单,即上传表单 if(!item.isFormField()){ //getRealPath这个方法返回uploadfile这个文件夹在当前web项目下的绝对路径 String folder=request.getRealPath("uploadfile"); //得到文件的大小,单位是byte long filesize=item.getSize(); System.out.println("folder: "+folder); System.out.println("filename: "+filename); System.out.println("filesize: "+filesize); if(filesize>0){ //构造这个文件,这个时候此文件还并不存在 File file=new File(folder+File.separator+filename); //用这个文件对象填充上面的file对象 item.write(file); } }else{ //非上传表单元素 System.out.println(item.getFieldName()+" : "+item.getString()); } } } catch (Exception e) { e.printStackTrace(); }
测试一下,控制台会输出如下结果:
用户名: null
住址:null
username : admin
address : admin
folder: E:\apache-tomcat-6.0.16\webapps\FileUpload\uploadfile
filename: 57fbd2efc17eb5c41e3dd1070e031243.jpg
filesize: 194927
最后上传的图片会放到folder后面的路径里面。