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. 关于加权的LIS问题

    蒟蒻Zigzag正在准备联赛...... 这个算是这几天做的唯一一个值得写一写的题吧.首先LIS的N^2暴力dp应该都会写,就是F[i]=Max{F[j]}+1 那么加权的就吧后面的1换成数的权值就行 ...

  2. 批处理命令——set

    [1]set命令简介 set,设置. [2]set命令使用 1. 打印系统环境变量.set命令可以打印系统所有的环境变量信息. 应用示例:新建文本文件,命名为set_sys,修改文件类型为bat,用N ...

  3. WampServer中MySQL中文乱码解决

    1.修改mysql的my.ini文件: 在 [client] 下面增加 default-character-set=utf8 在 [mysqld] 下面增加: character_set_server ...

  4. 在li元素中放入img图片时li的高度问题

    在li元素中放入img图片时li的高度会比img图片的高度多出几个像素,解决这个问题只需要将img元素的css设置成vertical-align: middle;就可以解决.

  5. logging模块转载博客

     转载自:http://blog.csdn.net/zyz511919766/article/details/25136485 简单将日志打印到屏幕: [python] view plain copy ...

  6. 【双标记线段树】bzoj1798维护序列seq

    一.题目 描述 老师交给小可可一个维护数列的任务,现在小可可希望你来帮他完成. 有长为N的数列,不妨设为a1,a2,-,aN .有如下三种操作形式: (1)把数列中的一段数全部乘一个值; (2)把数列 ...

  7. Checkpoint--与lazy writer区别

    checkpoint目的是减少数据库的恢复时间(服务奔溃或重启服务后的恢复),而lazy writer的目的是保证SQL OS 有空闲缓存块和系统有一定可用内存. Checkpoint和lazyWri ...

  8. C library function - freopen()

    Description The C library function FILE *freopen(const char *filename, const char *mode, FILE *strea ...

  9. python: 模块发布

    一.准备发布 1.为模块文件创建一个文件夹,并将模块文件复制到这个文件中(一般,文件夹的名字和模块的名字一样) 2.在文件夹中创建一个名为『setup.py』的文件,内容如下: #encoding:u ...

  10. Servlet 实现上传文件以及同时,写入xml格式文件和上传

    package com.isoftstone.eply.servlet; import java.io.BufferedReader; import java.io.BufferedWriter; i ...