使用fileupload实现文件上传
2014-02-25 14:45
274 查看
使用fileupload实现文件上传主要步骤
1、在http://commons.apache.org/下载commons-fileupload.jar和commons-io.jar包,将其导入到referenced libraries;
2、在写jsp界面的form表单设置ENCTYPE="multipart/form-data",method方法为“post”;
3、创建处理文件上传的servlet;
4、在webl-xml中进行上传文件保存地址和处理上传文件的servlet的配置。注意:进行上传文件保存地址必须存在。
相关代码如下:
界面代码:
处理文件上传的servlet代码:
在web—xml下进行相关配置
1、在http://commons.apache.org/下载commons-fileupload.jar和commons-io.jar包,将其导入到referenced libraries;
2、在写jsp界面的form表单设置ENCTYPE="multipart/form-data",method方法为“post”;
3、创建处理文件上传的servlet;
4、在webl-xml中进行上传文件保存地址和处理上传文件的servlet的配置。注意:进行上传文件保存地址必须存在。
相关代码如下:
界面代码:
<%@ page language="java" import="java.util.*" pageEncoding="gbk"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>文件上传界面</title> </head> <body background="images/back3.gif"><center> <!-- ENCTYPE后面设置的一定是mutlipare/form-data,否则服务器无法识别上传的是文件 --> <form ENCTYPE="multipart/form-data" method="post" action="FileUpload.do" name="uploadform"> <br>文件1:<input name="file1" size="40" type="file"> <br>文件2:<input name="file2" size="40" type="file"> <br>文件3:<input name="file3" size="40" type="file"> <br><input name="upload" type="submit" value="开始上传"/> </form> </center> </body> </html>
处理文件上传的servlet代码:
package cn.netjava.fileupload; import java.io.*; import java.io.IOException; import java.util.Iterator; import java.util.List; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload; /** * 文件上传示列 * 本程序生成文件上传处理的Servlet * 接受上传页面的请求,将上传的文件保存到upLoadDir目录下 *应预建upLoadDir目录 * @author www.NetJava.cn * */ public class FileUpLoad extends HttpServlet { /** * 无参构造器 */ public FileUpLoad() { super(); } /** * 接受客户端的请求 */ public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //得到servlet配置中的文件存放目录 String updoadFilePath=this.getInitParameter("updoadFilePath"); System.out.println("-------"+updoadFilePath); //是否上传成功 boolean state = false; // 用来引用上传成功的文件,以给客户端输出 java.util.List<File> upokFile=new java.util.ArrayList<File>(); try { // 创建一个基于磁盘文件的工厂 DiskFileItemFactory factory = new DiskFileItemFactory(); factory.setRepository(new File(updoadFilePath)); factory.setSizeThreshold(10); // 创建一个文件处理器 ServletFileUpload upload = new ServletFileUpload(factory); // 解析请求 List items = upload.parseRequest(request); // 处理文件上传项 Iterator iter = items.iterator(); while (iter.hasNext()) { FileItem item = (FileItem) iter.next(); if (item.isFormField()) { // 普通请求,可以接收请求中其它参数 } else { //文件上传请求 // 获得上传文件名 String fileName = item.getName(); System.out.println("文件全名为: "+fileName); fileName=fileName.substring(fileName.lastIndexOf("\\")); File temf= new File(updoadFilePath+ fileName); System.out.println("保存的路径为: "+temf.getAbsolutePath()); //将文件写入服务器上的目录 item.write(temf); upokFile.add(temf); state= true; } } } catch (Exception ef) { ef.printStackTrace(); } response.setContentType("text/html; charset=GBK"); PrintWriter out = response.getWriter(); out.println("<html>"); out.println("<head>"); out.println("<title>欢迎光临netjava 文件上传</title>"); out.println("</head>"); if(state){ out.println("<h1><font color='blue' size='20'>感谢您的支持!</font></h1>"); out.println("<h2><font color='red'>文件上传成功: </font></h2>"); //将文件链结打印到客户端供其下载 while(upokFile.size()>0){ File upFile=upokFile.remove(0); String paht=upFile.getParentFile().getName() +"/"+upFile.getName(); out.println("<br><a href=\""+paht+"\">"+upFile.getName()+"</a>"); } out.println("</dir>"); out.println("</body>"); out.println("</html>"); out.flush(); out.close(); } else { out.println("<h2><font color='red'>文件上传失败 :(</font></h2>"); out.println("</div>"); out.println("</body>"); out.println("</html>"); out.flush(); out.close(); } } /** * 销毁servlet */ public void destroy() { super.destroy(); // Just puts "destroy" string in log // Put your code here } /** * 初始化servlet */ public void init() throws ServletException { // Put your code here } }
在web—xml下进行相关配置
相关文章推荐
- 使用Anthem.NET 1.5中的FileUpload控件实现Ajax方式的文件上传
- 使用FileUpload实现多个文件同时上传
- [JAVA]彻底抛弃 jspSmartUpload,使用 common-fileupload 实现文件上传
- 使用Apache的commons-fileupload和commmons-io组件实现文件上传
- 使用commons-fileupload实现文件上传
- 使用 Anthem.NET 1.5中的FileUpload控件实现Ajax方式的文件上传
- 使用FileUpload组件实现文件上传
- 使用Anthem.NET 1.5中的FileUpload控件实现Ajax方式的文件上传
- 使用FileUpload工具实现文件上传与使用ThreadLocal容器传递数据实现分页查询下载
- 使用ajaxFileupload实现多文件批量上传
- Servlet使用commons-fileupload实现文件上传
- 使用commons-fileupload-1.2.1.jar等组件实现文件上传
- Struts2中使用Common-FileUpload实现文件上传(二)
- Apache之使用fileupload实现文件上传
- 使用commons-fileupload实现单个和多个文件上传
- java使用FileUpload实现文件的上传和下载
- Jsp 使用commons-fileupload实现文件上传
- 使用FileUpload组件实现文件上传
- Query插件之ajaxFileUpload使用方法——input.change()事件的时候实现文件上传
- (转自dflying chen)使用Anthem.NET 1.5中的FileUpload控件实现Ajax方式的文件上传