java上传组件FileUpload
如果表单中有文件要上传,也就是有<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的更多相关文章
- java深入探究10-文件上传组件FileUpload,邮件开发
1.文件上传组件FileUpload 1)java提供了文件上传的工具包 需要引入:commons-fileupload-1.2.1.jar(文件上床组件核心包) commons-oi-1.4(封装了 ...
- 文件上传组件FileUpload 以及邮箱搭建JavaMail
文件上传与下载 1.1 文件上传 案例: 注册表单/保存商品等相关模块! --à 注册选择头像 / 商品图片 (数据库:存储图片路径 / 图片保存到服务器中指定的目录) 文件上传,要点: 前台: 1 ...
- java上传组件commons-fileupload的一些使用方法
在 http://www.apache.org,下载commons-fileupload-1.2.1.jar包,并把这个包加到工程中,以下是记录这个上传组件的一些使用方法. html测试页面,实现上传 ...
- .JavaWeb文件上传和FileUpload组件使用
.JavaWeb文件上传 1.自定义上传 文件上传时的表单设计要符合文件提交的方式: 1.提交方式:post 2.表单中有文件上传的表单项:<input type="file" ...
- Commons FileUpload文件上传组件
Java实现的文件上传组件有好几种,其中最为“官方”的要数Apache Commons库中的FileUpload了吧. 页面 <form method="POST" enct ...
- java基础篇---文件上传(组件)
转载自:http://www.cnblogs.com/oumyye/p/4234969.html 文件上传几乎是所有网站都具有的功能,用户可以将文件上传到服务器的指定文件夹中,也可以保存在数据库中,本 ...
- 从零开始编写自己的C#框架(23)——上传组件使用说明
文章导航 1.前言 2.上传组件功能说明 3.数据库结构 4.上传配置管理 5.上传组件所使用到的类 6.上传组件调用方法 7.效果演示 8.小结 1.前言 本系列所使用的是上传组件是大神July开发 ...
- Flash上传组件之SWFUpload文件上传
一.什么是SWFUpload? SWFUpload是一个客户端文件上传工具,最初由Vinterwebb.se开发,它通过整合Flash与JavaScript技术为WEB开发者提供了一个具有丰富功能继而 ...
- Baidu WebUploader 前端文件上传组件的使用
简介 WebUploader是由Baidu WebFE(FEX)团队开发的一个简单的以HTML5为主,FLASH为辅的现代文件上传组件.在现代的浏览器里面能充分发挥HTML5的优势,同时又不摒弃主流I ...
随机推荐
- jsonUtil 工具类
package org.konghao.basic.util; import java.io.IOException; import java.io.StringWriter; import com. ...
- Ehcache(08)——可阻塞的Cache——BlockingCache
http://haohaoxuexi.iteye.com/blog/2119737 可阻塞的Cache—BlockingCache 在上一节我们提到了显示使用Ehcache锁的问题,其实我们还可以隐式 ...
- 也来说说C#异步委托(转)
原文地址: http://www.cnblogs.com/lxblog/archive/2012/12/11/2813893.html 前些日子,看到园子里面有人用老王喝茶的例子讲解了一下同步和异步, ...
- PostgreSQL中的AnyArray例子
http://www.joeconway.com/presentations/function_basics.pdf CREATE FUNCTION myappend(anyarray, anyele ...
- Codeforces Round #308 (Div. 2) A. Vanya and Table 暴力
A. Vanya and Table Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/552/pr ...
- 使用.net(C#)发送邮件学习手册(带成功案例)
使用.net(C#)发送邮件学习手册(带成功案例) 1.了解发送邮件的三种方式 2.实例介绍使用client.DeliveryMethod = System.Net.Mail.SmtpDelivery ...
- OutputDebugString()
坚定的 Win32 开发者可能对 OutputDebugString() API 函数比較熟悉,它能够使你的程序和调试器进行交谈.它要比创建日志文件easy,并且全部“真正的”调试器都能使用它.应用程 ...
- 日志记录到txt文件
using System;using System.Collections.Generic;using System.IO;using System.Linq;using System.Web;usi ...
- 关于pushState
window.pushState({}, "title", "/index.html");---------------->改变URL的值,但是并不刷新 ...
- [Node.js] Broswerify -- 2
Browserify allows you to leverage 10s of thousands of javascript modules available in the Node Packa ...