Commons-FileUpload组件上传文件
补充说明:
1、文件未上传完之前,页面是不会跳转的
2、request.getRequestDispatcher(url).forward(request,response)方法跳转后,它后面的代码仍会继续执行,除非return;
3、表单伪造submit元素可以,但是submit表单元素的id切记,不要命名为submit
转载部分:
https://www.cnblogs.com/dwxt/p/7880020.html
一、Commons-FileUpload简介
Commons-FileUpload组件
Commons是Apache开放源代码组织的一个Java子项目 5b4 ,其中的FileUpload是用来处理HTTP文件上传的子项目
Commons-FileUpload组件特点
使用简单:可以方便地嵌入到JSP文件中,编写少量代码即可完成文件的上传功能 能够全程控制上传内容 能够对上传文件的大小、类型进行控制
获取Commons-FileUpload组件的方式
http://commons.apache.org/fileupload下载Commons-FileUpload组件
Commons-FileUpload组件类库:commons-fileupload-1.2.2.jar
Commons-FileUpload组件的API文档: apidocs
http://commons.apache.org/io下载Commons-IO组件 Commons-IO组件
类库:commons-io-2.4.jar
Commons-IO组件的API文档: commons-io-2.4\docs
二、Commons-FileUpload组件的API
三、Commons-FileUpload组件应用
四、代码
index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%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> <base href="<%=basePath%>"> <title>上传</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"> </head> <body> <form action="DoUpLoadServlet" enctype="multipart/form-data" method="post"> <p>选择图片:<input type="file" name="nfile"></p> <p><input type="submit" value="提交"></p> </form> </body> </html>
DoUpLoadServlet
package com.qj.servlet;import java.io.File;import java.io.IOException;import java.io.PrintWriter;import java.util.Arrays;import java.util.Iterator;import java.util.List;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;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.FileUploadBase;import org.apache.commons.fileupload.disk.DiskFileItemFactory;import org.apache.commons.fileupload.servlet.ServletFileUpload;/** * Servlet implementation class DoUpLoadServlet */@WebServlet("/DoUpLoadServlet")public class DoUpLoadServlet extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public DoUpLoadServlet() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("UTF-8"); String uploadFileName = ""; //上传的文件名 String fieldName = ""; //表单字段元素的name属性值 PrintWriter out = response.getWriter();//获取out对象 //请求信息中的内容是否是multipart类型 boolean isMultipart = ServletFileUpload.isMultipartContent(request); //上传文件的存储路径(服务器文件系统上的绝对文件路径) String uploadFilePath = request.getSession().getServletContext().getRealPath("upload/" ); //创建临时文件目录路径 File tempPatchFile=new File("d:\\temp\\buffer\\"); if(!tempPatchFile.exists()) //判断文件或目录是否存在 tempPatchFile.mkdirs(); //创建指定的目录,包括所有必需但不存在的父目录 if (isMultipart) { DiskFileItemFactory factory=new DiskFileItemFactory(); & 5b4 nbsp;//设置缓冲区大小4kb factory.setSizeThreshold(4096); //设置上传文件用到临时文件存放路径 factory.setRepository(tempPatchFile); ServletFileUpload upload = new ServletFileUpload(factory); //设置单个文件的最大限制 upload.setSizeMax(1024*30); try { //解析form表单中所有文件 List<FileItem> items = upload.parseRequest(request); Iterator<FileItem> iter = items.iterator(); while (iter.hasNext()) { &n 16c8 bsp; //依次处理每个文件 FileItem item = (FileItem) iter.next(); if (!item.isFormField()){ //文件表单字段 String fileName = item.getName(); //通过Arrays类的asList()方法创建固定长度的集合 List<String> filType=Arrays.asList("gif","bmp","jpg"); String ext=fileName.substring(fileName.lastIndexOf(".")+1); if(!filType.contains(ext)) //判断文件类型是否在允许范围内 out.print("上传失败,文件类型只能是gif、bmp、jpg"); else{ if (fileName != null && !fileName.equals("")) { File fullFile = new File(item.getName()); File saveFile = new File(uploadFilePath, fullFile.getName()); item.write(saveFile); uploadFileName = fullFile.getName(); out.print("上传成功后的文件名是:"+uploadFileName+ ",文件大小是:"+item.getSize()+"bytes!"); } } } } }catch(FileUploadBase.SizeLimitExceededException ex){ out.print("上传失败,文件太大,单个文件的最大限制是:"+upload.getSizeMax()+"bytes!"); }catch (Exception e) { e.printStackTrace(); } } } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
- commons_fileupload组件 简单文件上传
- java组件commons-fileupload文件上传示例
- 用Apache的commons-fileupload组件上传文件时,普通字段编码出错
- 使用commons-fileUpload组件上传文件
- 文件上传-commons-fileupload组件
- 使用commons-fileupload组件上传下载文件
- 使用commons-fileupload组件实现文件上传
- 利用开源组件commons-fileupload上传图片文件(2)
- 利用commons-fileupload组件实现文件上传-实例
- 在JSP环境中利用Commons-fileupload组件实现文件上传
- JSP组件commons-fileupload实现文件上传
- 在JSP环境中利用Commons-fileupload组件实现文件上传
- 用commons-fileupload组件上传文件
- java组件commons-fileupload实现文件上传
- 使用Commons-fileupload组件实现文件上传
- java基础篇---文件上传(commons-FileUpload组件)
- JSP组件commons-fileupload实现文件上传
- JSP使用commons-fileupload组件实现文件上传代码示例
- 用Commons-FileUpload组件实现文件上传
- 使用Commons-fileupload组件和jstl实现文件上传