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. boost源码剖析----boost::any

    boost源码剖析----boost::any 有的时候我们需要有一个万能类型来进行一些操作,这时候boost::any就派上用场了. boost::Any testInt(10); int val ...

  2. 十三、Java基础---------多线程总结

    多线程概述 理解多线程首先应明确线程,要了解线程就必须了解什么是进程. 1.进程 是一个正在执行的程序. 每一个进程执行都有一个执行顺序.该顺序是一个执行路径,或者叫一个控制单元. 2.线程 就是进程 ...

  3. python核心编程学习记录之文件和输入输出

  4. java 中继承,组合,重载,重写的实现原理 (转)

    我们知道,继承,组合,重载,重写是java语言的面向对象实现的基本特征. 那么在java内部,究竟是如何实现这些面对对象的基本特征的呢? 继承和组合是面向对象中代码复用的主要实现方式,他们可以达到类似 ...

  5. noi 1944 吃糖果

    题目链接:http://noi.openjudge.cn/ch0206/1944/ 根据第一天吃的个数递推,发现这个递推关系很像斐波那契数列. http://paste.ubuntu.com/2340 ...

  6. easyui combobox 带 checkbox

    $('#cc').combobox({ url:'combobox_data1.json', method:'get', valueField:'id', textField:'text', pane ...

  7. [转]unicode,ansi,utf-8,unicode big endian的故事

    unicode,ansi,utf-8,unicode big endian的故事很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万物.他们看到8个开关状态是好的 ...

  8. 【Spring】初始化Spring IoC容器(非Web应用),并获取Bean

    参考文章 Introduction to the Spring IoC container and beans BeanFactory 和ApplicationContext(Bean工厂和应用上下文 ...

  9. 【Nginx】配置Nginx的负载均衡

    参考的优秀文章 tomcat配置文件server.xml详解 AJP协议总结与分析 Using nginx as HTTP load balancer 在本机运行2个Tomcat 现需要运行两个Tom ...

  10. dojox.grid.DataGrid

    创建表格 <table data-dojo-type="dojox.grid.DataGrid" data-dojo-id="grid" style=&q ...