用Commons-FileUpload组件实现文件上传
一、用Commons-FileUpload组件实现文件上传
1.导入两个jar包
FileUpload下载地址:
http://commons.apache.org/fileupload/
下载:commons-fileupload-1.2.2-bin.zip 得到:commons-fileupload-1.2.2.jar
下载:commons-io-1.4-bin.zip 得到:commons-io-1.4.jar
2、设置表单的属性设置以及使用file设置选择文件,提交地址是test.jsp
<body> <form enctype="multipart/form-data" action="<%=path%>/test.jsp" method="post"> 文件名:<input type="text" name="userName"> 选择图片:<input type="file" name="myfile"> <input type="submit" value="提交"> </form> </body>
如图所示:
3、创建test.jsp页面,文件上传到upload文件夹中,实现上传功能
<%@page import="java.io.File"%> <%@page import="org.apache.commons.fileupload.*" %> <%@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.setCharacterEncoding("utf-8"); //判断是普通表单还是文件上传 boolean flag=ServletFileUpload.isMultipartContent(request); if(flag) { //定义一个解析器,来解析请求中的各个项目 DiskFileItemFactory factory=new DiskFileItemFactory(); //解析upload创建成功 ServletFileUpload upload=new ServletFileUpload(factory); List<FileItem>fileList=upload.parseRequest(request); //每一个fileItem都代表一个表单元素 Iterator<FileItem> myitor=fileList.iterator(); while(myitor.hasNext()) { FileItem item=myitor.next(); if(item!=null) { if(item.isFormField()) { //获取该表单元素内容(value值) String name=item.getFieldName(); //表单的name属性而不是value值 if(name.equals("username")) { out.print(item.getString("utf-8")); } } else { String filename=item.getName(); //服务器目录下 相对路径 String path="/WEB-INF/upload/"; //转换为绝对路径 String absolutepath=this.getServletContext().getRealPath(path); File file=new File(filename); File uploadFile=new File(absolutepath,file.getName()); item.write(uploadFile); out.print("上传成功!"); } } } } %>