标签:
1:首先在index.jsp的界面上初始化一个表单。
<body> <form enctype="multipart/form-data" action="<%=path%>/1.jsp" method="post"> 姓名:<input type="text" name="username"/> 选择文件:<input type="file" name="myfile"/> <input type="submit" value="提交"/> </form> </body>
enctype=多部分的表单数据,并且如果form表单的属性中多了enctype="multipart/form-data",是不能使用request.getParameter(name属性的)
2:在WEB-ROOT的根目录下创建一个1.jsp,实现文件上传功能!
<%@page import="java.io.File"%> <%@page import="org.apache.commons.fileupload.FileItem"%> <%@page import="org.apache.commons.fileupload.disk.DiskFileItemFactory"%> <%@page import="org.apache.commons.fileupload.servlet.ServletFileUpload"%> <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% //判定request请求的类型 request.setCharacterEncoding("utf-8"); boolean flag= ServletFileUpload.isMultipartContent(request); if(flag) { DiskFileItemFactory factory=new DiskFileItemFactory(); //找到一个解析器,解析请求中的各个项目 ServletFileUpload upload=new ServletFileUpload(factory);//解析器的创建 List<FileItem> list=upload.parseRequest(request);//使用解析器解析请求的数据 Iterator<FileItem> myitor= list.iterator();//自动迭代的功能 while(myitor.hasNext()) { FileItem item=myitor.next(); if(item!=null) { //判断FileItem对象封装的数据类型,文件表单或普通表单字段 if(item.isFormField())//普通表单 { String name= item.getFieldName();//获取表单的name属性 if(name.equals("username")) { out.print(item.getString("utf-8")); } } else { String name=item.getName();//获得文件名 out.print(name); String path="/WEB-INF/upload/";//相对路径名 String path2=this.getServletContext().getRealPath(path);//通过相对路径名来获得绝对路径名 out.print(path2); File file=new File(name); File uploadpath=new File(path2,file.getName()); item.write(uploadpath);//向该路径写入文件 out.print("上传成功"); } } } } %>
标签:
原文地址:http://www.cnblogs.com/S2223/p/5638124.html