java中Commons-fileupload组件实现上传

在实现功能之前需要导入两个jar文件,分别是 commons-fileupload-1.3.1.jarcommons-io.jar 文件,这里就不提供链接,网上搜索都有可以自行下载。

----------------------------------------------------jsp页面-----------------------------------------------------

第一步:先上传一个简单的jsp页面 ,在上jsp页面之前需要说的问题是:需要在jsp页面导入类库:<%@ page import="org.apache.commons.fileupload.*"%>

接下来来一个简单的form表单的jsp页面的代码,用于界面上传:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page import="org.apache.commons.fileupload.*"%><!-- 导入类库 -->
<%
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">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head> <body>
<h2>
使用commons-fileupload上传文件
</h2>
<hr />
<form action="CommonsFileuploadServlet02" method="post"
enctype="multipart/form-data"> <table> <tr>
<td>上传的用户</td> <td><input type="text" name="uesr" size="20" /></td>
</tr> <tr>
<td>请选择要上传的文件</td>
<td><input type="file" name="filepath" size="20" /></td>
</tr> <tr>
<td><input type="submit" value="上传" /> </td>
</tr>
</table>
</form>
</body>
</html>

-----------------------------------------------CommonsFileuploadServlet.java逻辑处理文件------------------------------------------

第二部份内容是form表单请求的Servlet文件:CommonsFileuploadServlet.java

注意看doPost内部的方法:

package cn.jbit.servlet;

import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
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.DiskFileUpload;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload; public class CommonsFileuploadServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { doPost(request, response);
} public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { request.setCharacterEncoding("UTF-8");// 输入防止中文乱码
response.setContentType("text/html;charset=UTF-8");// 输出防止中文乱码 PrintWriter out = response.getWriter(); String show = "文件上传成功"; // 上传的文件名
String uploadfileName = "";
// 表单元素的name属性值
String filename = ""; // 1.请求信息是否为multipart/form-data类型
boolean isMultipart = ServletFileUpload.isMultipartContent(request); // 2.设置上传文件的存储路径,注意这里获取的是tomcat服务下当前项目下的目录文件
/*
* String uploadFilePath = request.getSession().getServletContext()
* .getRealPath("");
*/ /**
* 这里我们可以根据自己的需求自定义路径
*/
String uploadFilePath = "D:/"; // 判断如果是multipart/form-data类型
if (isMultipart) {
// 创建file工厂
FileItemFactory factory = new DiskFileItemFactory(); // ServletFileUpload对象的创建需要依赖FileItemFactory工厂
ServletFileUpload upload = new ServletFileUpload(factory); /**
* 当然,这里我们也可以这么写 ServletFileUpload upload = new
* ServletFileUpload(new DiskFileItemFactory());
* //简化了创建FileItemFactory工厂实例
*/ // 设置转换时使用的字符编码集
upload.setHeaderEncoding("UTF-8");
/**
* 在这里建议: request.setCharacterEncoding("UTF-8");// 输入防止中文乱码
* response.setContentType("text/html;charset=UTF-8");//输出防止中文乱码
* upload.setHeaderEncoding("UTF-8"); 这三句防止乱码的操作都加上!保险!!
*
*/
try {
// 这里创建FileItem集合对象,用户接收ServletFileUpload
// 对象的parseRequest()方法所返回的值
List<FileItem> fileList = upload.parseRequest(request); Iterator<FileItem> iterator = fileList.iterator(); while (iterator.hasNext()) { // 依次处理每个文件 // 循环获取FileItem对象实例
FileItem item = iterator.next(); /*
* isFormField()方法的意思是根据表单内的字段类型返回不同的结果,如果得到的是普通字段的类型则返回true,
* 如果是文件字段则返回false
*/
if (item.isFormField()) { // 这里获取的是提交的form表单内的普通字段、如text、password等 filename = item.getFieldName(); // 表单字段的name属性值
// ,注意是name属性的值,而不是对应value的值,这一点需要明白 System.out.println("---------------" + filename); // 打印 } else {// 否则获取文件字段 String filedname = item.getName(); // 获取上传文件的全路径字符串 System.out.println("--------------" + filedname); // 打印测试 // 判断是否不等于空
if (filedname != null && !filedname.equals("")) {
// 创建file对象,保存输入的文件路径(需要上传的文件是从哪个路径下传过来的)
File fullFile = new File(filedname); System.out.println("-----------fullFile----------"
+ fullFile); // 打印测试,看看此时的fullFile是什么 // 这里通过File对象的getName()方法从路径中获取上传的文件名称,然后把文件名和新的路径(需要将上传文件传到哪里的路径)进行拼接,结合,从而形成一个新的路径
File savefile = new File(uploadFilePath, fullFile
.getName()); System.out.println("-----------savefile----------"
+ savefile); // 打印测试将要讲文件传入哪里的全路径 // 通过FileItem对象的write()方法保存的主体内容到指定的文件路径中
item.write(savefile); // 获取上传的文件名称
uploadfileName = savefile.getName(); // 向jsp页面输出上传成功的信息
out.print("<script>alert( " + "'" + uploadfileName
+ show + "'"
+ ");location.href='index.jsp';</script>"); } else {
// 向jsp页面输出上传失败的信息
out.print("<script>alert('文件上传失败');location.href='index.jsp';</script>"); }
}
} } catch (FileUploadException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} } else {
out
.print("<script>alert('系统内部错误');location.href='index.jsp';</script>"); }
}
}

java中Commons-fileupload实现上传的更多相关文章

  1. ASP.NET中扩展FileUpload的上传文件的容量

    ASP.NET中扩展FileUpload只能上传小的文件,大小在4MB以内的.如果是上传大一点的图片类的可以在web.config里面扩展一下大小,代码如下 <system.web> &l ...

  2. Commons FileUpload文件上传组件

    Java实现的文件上传组件有好几种,其中最为“官方”的要数Apache Commons库中的FileUpload了吧. 页面 <form method="POST" enct ...

  3. commons.fileupload 文件上传

    编辑jsp页面获取文件 <html> <head> <base href="<%=basePath%>"> <title> ...

  4. ASP.NET中的FileUpload文件上传控件的使用

    本篇文章教大家如何将客户端的图片或者文件上传到服务器: 无论是上传图片(.jpg .png .gif等等) 文档(word excel ppt 等等). 第一步:放入以下三个控件 Image控件,Fi ...

  5. Java中实现图片的上传

    这边直接存放在c盘的指定目录,在property中指定了一个目录 没有花时间写用户操作的上传页面,直接用swagger2插件,可以上传 默认图片大小超过1mb就不可以上传,可以如下更改 server. ...

  6. Java中Excel表格的上传与下载

    详见:http://blog.csdn.net/lzh657083979/article/details/73252585

  7. asp.net中FileUpload得到上传文件的完整路径

    asp.net中FileUpload得到上传文件的完整路径 Response.Write("完整路径:" + Server.MapPath(FileUpload1.PostedFi ...

  8. Spring中MultipartHttpServletRequest实现文件上传

    Spring中MultipartHttpServletRequest实现文件上传 转贴自:http://my.oschina.net/nyniuch/blog/185266 实现图片上传  用户必须能 ...

  9. Spring中MultipartHttpServletRequest实现文件上传 生成缩略图

    转贴自:http://my.oschina.net/nyniuch/blog/185266 实现图片上传  用户必须能够上传图片,因此需要文件上传的功能.比较常见的文件上传组件有Commons Fil ...

  10. Java实现对文件的上传下载操作

    通过servlet,实现对文件的上传功能 1.首先创建一个上传UploadHandleServlet ,代码如下: package me.gacl.web.controller; import jav ...

随机推荐

  1. jquery判断起止时间大小和非空

    //时间判断 function CheckDate() { var startTime = $('#txtTime').val(); //获取当前日期 var start = new Date(sta ...

  2. 重构wangEditor(web富文本编辑器),欢迎指正!

    提示:最新版wangEditor请参见:wangEditor.github.io 或者 https://github.com/wangfupeng1988/wangEditor 1. 前言 (下载源码 ...

  3. 【笔记】jquery hover的用法

    hover函数格式: $("A").hover(function(){ //当鼠标移入的时候执行第一个函数 },function(){ //当鼠标移出的时候执行第二个函数 }) * ...

  4. Hadoop编程1:天气数据AWK & MapReduce

    本文介绍通过AWK和MapReduce两种方式统计出每年温度到最高气温直.awk速度虽然快,而且简短,但是数据量巨大到时候,就遇到力瓶颈,及时分布式执行awk脚本,也会出现机器死掉等问题,需要容错机制 ...

  5. spring.net

    Spring.Net有两个很重要的感念就是IoC(控制反转)和DI(依赖注入). IoC.英文全称Inversion of Control.控制反转.DI.英文全称Dependency Injecti ...

  6. wex5 教程 之 图文讲解 后台管理界面设计与技巧

    视频教程地址:http://v.youku.com/v_show/id_XMTgwOTAyMTkyMA==.html?from=s1.8-1-1.2&spm=a2h0k.8191407.0.0 ...

  7. 为您详细比较三个 CSS 预处理器(框架):Sass、LESS 和 Stylus

    CSS 预处理器技术已经非常的成熟,而且也涌现出了越来越多的 CSS 的预处理器框架.本文向你介绍使用最为普遍的三款 CSS 预处理器框架,分别是 Sass.Less CSS.Stylus. 首先我们 ...

  8. android抽屉总结

    android抽屉:1.DrawerLayout 在xml文件中要注意写全称:android.support.v4.widget.DrawerLayout <LinearLayout /> ...

  9. 20160308001 GridView的Sorting排序

    参考地址: http://www.cnblogs.com/yinluhui0229/archive/2011/08/01/2124169.html 功能介绍:单击gridview的某一列列头,可以对该 ...

  10. C++ Programming language读书笔记

    C语言,结构化程序设计.自顶向下.逐步求精及模块化的程序设计方法;使用三种基本控制结构构造程序,任何程序都可由顺序.选择.循环三种基本控制结构构造. 模块结构:"独立功能,单出.入口&quo ...