如果表单中有文件要上传,也就是有<input type="file" name="name"/>
就需要在form标签中添加enctype="multipart/form-data"属性 如果添加此属性,在操作
页面servlet中,用request.getParameter("name")获取普通表单数据就会
出错java.lang.NullPointerException
可以使用FileUpload组件操作上传文件
1,导入jar包;commons-fileupload-1.2.2.jar commons-io-1.4.jar

上传jsp页面fileupload.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>上传表单</title>
</head>
<body> <form action="${pageContext.request.contextPath }/servletupload1" method="post" enctype="multipart/form-data">
<p>用户名:<input type="text" name="username"></p>
<input type="file" name="file1"/><br/>
<input type="file" name="file2"/><br/>
<input type="submit" value="上传"/>
</form>
</body>
</html>

servlet页面进行操作

package com.henau.fileupload;

import java.io.IOException;
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.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload; public class servletupload1 extends HttpServlet {
private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setCharacterEncoding("UTF-8");
DiskFileItemFactory factory=new DiskFileItemFactory();//磁盘工厂
ServletFileUpload upload=new ServletFileUpload(factory);//创建处理工具
if(!upload.isMultipartContent(request)){//判断是否有multipart/form-data
return;
}
upload.setHeaderEncoding("UTF-8");//解决中文文件名乱码问题
upload.setFileSizeMax(10*1024*1024);//设置最大上传文件10M
try {
List<FileItem> items=upload.parseRequest(request);//获取表单列表
Iterator<FileItem> it=items.iterator();//获取列表迭代器
while(it.hasNext()){
FileItem item=it.next();
String fieldname=item.getFieldName();
if(!item.isFormField()){//isFormField()是否是普通文本
response.getWriter().write(fieldname+":文件大小:"+item.getSize()+"<br/>");
response.getWriter().write(fieldname+":文件名称:"+item.getName()+"<br/>");
response.getWriter().write(fieldname+":文件类型:"+item.getContentType()+"<br/>");
}else{
response.getWriter().write(fieldname+":普通文本数据:"+item.getString("UTF-8")+"<br/>");
}
}
} catch (FileUploadException e) {
e.printStackTrace();
} } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
} }

页面显示效果

username:普通文本数据:用户名
file1:文件大小:14
file1:文件名称:IO流.txt
file1:文件类型:text/plain
file2:文件大小:2621
file2:文件名称:javaSE需求.txt
file2:文件类型:text/plain

java上传组件FileUpload的更多相关文章

  1. java深入探究10-文件上传组件FileUpload,邮件开发

    1.文件上传组件FileUpload 1)java提供了文件上传的工具包 需要引入:commons-fileupload-1.2.1.jar(文件上床组件核心包) commons-oi-1.4(封装了 ...

  2. 文件上传组件FileUpload 以及邮箱搭建JavaMail

     文件上传与下载 1.1 文件上传 案例: 注册表单/保存商品等相关模块! --à 注册选择头像 / 商品图片 (数据库:存储图片路径 / 图片保存到服务器中指定的目录) 文件上传,要点: 前台: 1 ...

  3. java上传组件commons-fileupload的一些使用方法

    在 http://www.apache.org,下载commons-fileupload-1.2.1.jar包,并把这个包加到工程中,以下是记录这个上传组件的一些使用方法. html测试页面,实现上传 ...

  4. .JavaWeb文件上传和FileUpload组件使用

    .JavaWeb文件上传 1.自定义上传 文件上传时的表单设计要符合文件提交的方式: 1.提交方式:post 2.表单中有文件上传的表单项:<input type="file" ...

  5. Commons FileUpload文件上传组件

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

  6. java基础篇---文件上传(组件)

    转载自:http://www.cnblogs.com/oumyye/p/4234969.html 文件上传几乎是所有网站都具有的功能,用户可以将文件上传到服务器的指定文件夹中,也可以保存在数据库中,本 ...

  7. 从零开始编写自己的C#框架(23)——上传组件使用说明

    文章导航 1.前言 2.上传组件功能说明 3.数据库结构 4.上传配置管理 5.上传组件所使用到的类 6.上传组件调用方法 7.效果演示 8.小结 1.前言 本系列所使用的是上传组件是大神July开发 ...

  8. Flash上传组件之SWFUpload文件上传

    一.什么是SWFUpload? SWFUpload是一个客户端文件上传工具,最初由Vinterwebb.se开发,它通过整合Flash与JavaScript技术为WEB开发者提供了一个具有丰富功能继而 ...

  9. Baidu WebUploader 前端文件上传组件的使用

    简介 WebUploader是由Baidu WebFE(FEX)团队开发的一个简单的以HTML5为主,FLASH为辅的现代文件上传组件.在现代的浏览器里面能充分发挥HTML5的优势,同时又不摒弃主流I ...

随机推荐

  1. xml和xsl配合使用实例

    找到一个实际应用的例子,是英语统考打印准考证的实例,关于xml和xsl配合使用的. 下面看看xml文档 <?xml version='1.0' encoding='utf-8' ?> &l ...

  2. 个推推送Android问题检测

    1.获取不到CID问题: 1.      查看配置文件是否有问题,appkey.appsecret.appid是否有空格存在. 2.      相关权限是否全部添加. 3.      manifest ...

  3. linux 压缩与解压缩

    tar 命令详解  -c: 建立压缩档案   -x:解压   -t:查看内容   -r:向压缩归档文件末尾追加文件   -u:更新原压缩包中的文件   这五个是独立的命令,压缩解压都要用到其中一个,可 ...

  4. 【M30】代理类

    1.考虑二维数组,在栈上分配,必须在编译时确定大小,也就是大小是常量.另外一点,C++不支持在堆上分配二维数组.怎么解决这个问题? 二维数组可以看成,一维数组的数组.因此,可以使用代理类,Array2 ...

  5. Codeforces Gym 100187M M. Heaviside Function two pointer

    M. Heaviside Function Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100187/ ...

  6. JLayer初体验。。

    Java最近推出的JLayer虽然和sharped window or translucent window一起有位JavaFX的开发做准备之嫌,但是试了一下还是感觉不错滴.. JLayer 和 gl ...

  7. js验证身份证id

    function isCardNo(card) { // 身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X var reg = /(^\d{1 ...

  8. PHP apache2.2 mysql 的安装

    1.安装准备 我的系统为win7 旗舰版 php:http://windows.php.net/downloads/releases/php-5.3.6-Win32-VC9-x86.zip mysql ...

  9. IDEA和Eclipse经常使用快捷键(Win Mac)

    一. 代码生成/补全 Alt+回车  导入包,自己主动修正(Eclipse中Ctrl+Shift+O ) Alt+Inser 生成getter setter.构造器 Ctrl+Shift+Space( ...

  10. 暂时解决Sublime Text 2不支持input问题(转)

    (1)打开当前python文件 (2)然后 Tools -> Command Palette (3)SublimeREPL Python RUN current file (4)就会打开新窗口, ...