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 append,appendTo,prepend,prependTo 介绍

    在jquery权威指南里面学习到这一章,很有必要介绍一下里面的内容: 首先是append(content)这个函数: 意思是将内容content加入到所选择的对象内容的后面 例如:$("di ...

  2. Hadoop实战5:MapReduce编程-WordCount统计单词个数-eclipse-java-windows环境

    Hadoop研发在java环境的拓展 一 背景 由于一直使用hadoop streaming形式编写mapreduce程序,所以目前的hadoop程序局限于python语言.下面为了拓展java语言研 ...

  3. JavaScript原型理解

    这东西我还不是很理解,但是把自己实践的过程记录下来,希望积累到一定程度,能自然而而然的理解了.很多东西我是这样慢慢理解的,明白为啥是那样子,真的很神奇哦.少说废话,开始吧. 可以先阅读这篇文章 fun ...

  4. 纯CSS气泡效果

    http://www.liaoxuefeng.com/article/0013738937970388b6b6e5e5e2f4e21b65b01807c84ddf6000

  5. Dynamics AX 2012 R2 客制化RDP报表参数对话框

    当我们在使用RDP报表时,AX会根据Data Contract,自动生成报表参数对话框上的字段控件.一般情况下,该对话框能够满足我们的需求,但是如果有较为复杂或特殊的需求,就要我们对该对话框进行客制化 ...

  6. Hash表算法

    出处:http://blog.csdn.net/v_JULY_v 第一部分:Top K 算法详解问题描述百度面试题:    搜索引擎会通过日志文件把用户每次检索使用的所有检索串都记录下来,每个查询串的 ...

  7. Unity3D UGUI学习系列索引(暂未完成)

    U3D UGUI学习1 - 层级环境 U3D UGUI学习2 - Canvas U3D UGUI学习3 - RectTransform U3D UGUI学习4 - Text U3D UGUI学习5 - ...

  8. Android中的动态加载机制

    在目前的软硬件环境下,Native App与Web App在用户体验上有着明显的优势,但在实际项目中有些会因为业务的频繁变更而频繁的升级客户端,造成较差的用户体验,而这也恰恰是Web App的优势.本 ...

  9. file以及文件大小转化问题

    android 获取文件夹.文件的大小 以B.KB.MB.GB 为单位             public class FileSizeUtil { public static final int ...

  10. 使用Rsync进行文件的同步与备份

    Rsync是Linux下非常不错的文件同步备份工具,安全性高.备份迅速.支持增量备,功能强大且高效. 服务端配置 Rsync服务的配置文件/etc/rsyncd.conf,示例配置(带用户名密码配置) ...