jsp+servlet实现多个文件的上传
2013-12-26 17:26
417 查看
jsp代码 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%> <fmt:setBundle basename="csdn" /> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>My JSP 'Uplode.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- 引入jquery easyui的css样式 --> <link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/themes/default/easyui.css"> <link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/themes/icon.css"> <!-- 引入jQuery easyui的js文件 并且引入了jquery.js文件 --> <script type="text/javascript" src="${pageContext.request.contextPath}/js/jquery.min.js"></script> <script type="text/javascript" src="${pageContext.request.contextPath}/js/jquery.easyui.min.js"></script> <script type="text/javascript"> $(function() { /* 注册添加按钮的点击事件 */ $("#addFile").click(addFile); }); var addFile = function() { var $file = $("<input type='file' name='UplodeName'/>"); $("#fileUplodeDiv").append($file).append($("<br>")); }; </script> </head> <body> <form action="${pageContext.request.contextPath }/uplodes.action" enctype="multipart/form-data" method="post"> 上传者:<input type="text" name="name"> <br> 上文件:<input type="file" name="UplodeName" value="你好"> <div id="fileUplodeDiv"></div> <br> <br> <input type="submit" value="提交文件"> <input type="button" value="添加文件" id="addFile" > </form> </body> </html>
java代码,web.xml中注册的是/uplodes.action package servlet; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; 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.FileUploadException; import org.apache.commons.fileupload.UploadContext; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload; public class UplodesServlet extends HttpServlet { private int maxFileSize = 1024 * 1024 * 10; // 定义文件的路径 private String path = "D:\\"; private String fileType = ""; public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 解决文件的中文乱码 request.setCharacterEncoding("UTF-8"); // 创建磁盘文件工厂处理对象 DiskFileItemFactory diskFileItemFactory = new DiskFileItemFactory(); // 创建服务器文件上传处理对象 ServletFileUpload servletFileUpload = new ServletFileUpload( diskFileItemFactory); /* * // 设置文件最大的上传的大小 servletFileUpload.setFileSizeMax(maxFileSize);// 10M */ try { // 解析request请求中的字段和请求的内容 List<FileItem> fileItems = servletFileUpload.parseRequest(request); // 遍历解析出的list集合 for (FileItem fileItem : fileItems) { // 判断解析出的是否是普通的文本字段 if (fileItem.isFormField()) { // 获取字段名称 String filedName = fileItem.getName(); // 获取字段名对应的值 String filedValue = fileItem.getString("UTF-8"); // 输出文本框的内容 System.out.println(filedName + "==================" + filedValue); } else { // 判断资源文件大小是否合法 if (fileItem.getSize() <= maxFileSize) { // 获取字段名 String fileName = fileItem.getName(); // 解决不同浏览器的文件路径问题 // ie或是其它的是这样的路径C:\Users\chenhongjun\Desktop\tag_1388040641790.txt // 火狐的只有文件名 // D:\视频\day52\录像12.avi if (!fileName.equals("")) { // 获取上传文件的类型 System.out.println(fileItem.getContentType()); // 判断是否是指定的类型文件 if (fileItem.getContentType().equals("image/jpeg")) { // 判断是否包含"\" int index = fileName.lastIndexOf("\\"); if (index != -1) { fileName = fileName.substring(index + 1); } // 指定文件存储的路径 File file = new File(path, newFileName(fileName)); // 创建输出流 FileOutputStream fos = new FileOutputStream( file); // 获取request中解析出的输入流 InputStream is = fileItem.getInputStream(); // 创建缓冲区域 byte[] buffer = new byte[1024]; int len = 0; while ((len = (is.read(buffer))) != -1) { // 将缓冲区内的内容写出 fos.write(buffer, 0, len); } fos.flush(); fos.close(); is.close(); // 删除临时文件 fileItem.delete(); System.out.println("success"); } else { System.out.println("请上传指定的文件类型"); } } else { System.out.println("请选择要上传的文件"); } } else { System.out.println("文件过大,超出" + maxFileSize); } } } } catch (FileUploadException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doGet(request, response); } // 文件名的处理 public String newFileName(String oldFileName) { // 获取最后一个"."出现的位置下标 int index = oldFileName.lastIndexOf("."); // 截取最后一个"."之前的内容 String frontStr = oldFileName.substring(0, index); // 获取最后一个"."之后的内容 String behindStr = oldFileName.substring(index); // 重新拼接文件的名称 String newFileName = frontStr + System.currentTimeMillis() + "_" + behindStr; return newFileName; } }
相关文章推荐
- Jsp+Servlet实现文件上传下载 文件上传(一)
- jsp+servlet实现文件上传
- Jsp/Servlet:实现文件上传与下载
- jsp+servlet用底层代码实现文件上传下载
- Servlet+Jsp实现图片或文件的上传功能具体思路及代码
- servlet + JSP+ mysql实现文件的上传
- jsp+servlet实现文件的上传和下载 运用了Apache Commons组件
- 通过JSP+servlet实现文件上传功能
- jsp+servlet实现文件的上传功能
- Servlet+Jsp实现图片或文件的上传功能
- Jsp+Servlet实现文件上传下载(四)--下载文件
- Servlet和Jsp实现原生的上传与下载文件
- Jsp+Servlet实现文件上传下载(一)--文件上传
- Servlet+Jsp实现图片或文件的上传功能具体思路及代码
- Jsp/Servlet:实现文件上传与下载
- 用jsp和servlet实现文件上传
- jsp+servlet实现文件上传与下载功能
- jsp+servlet实现文件上传
- servlet+jsp实现的文件上传与下载
- 用servlet和JSP实现文件上传功能