用Commons-FileUpload组件实现文件上传
需要用到Tomcat还有commons-fileupload-1.3.1.jar包和commons-io-2.4.jar包。
如果需要传一个文件,form表单必须有enctype="multipart/form-data"属性,否则服务器会认不到。
表单中enctype="multipart/form-data"的意思,是设置表单的MIME编码。默认情况,这个编码格式是application/x-www-form-urlencoded,不能用于文件上传;只有使用了multipart/form-data,才能完整的传递文件数据,进行下面的操作.
如:我的index.jsp页面
<body>
<form action="test.jsp" enctype="multipart/form-data" method="post" >
<p>文件名:<input type="text" name="filedname"></p>
<p>选择图片:<input type="file" name="selectfile"></p>
<input type="submit" value="提交">
</form>
</body>
然后数据提交到test.jsp页面:
首先要判断请求的数据是否是否是multipart/form-data;
boolean flag=ServletFileUpload.isMultipartContent(request);
if (flag) {
FileItemFactory factory = new DiskFileItemFactory();
//设置缓冲区大小4kb
((DiskFileItemFactory) factory).setSizeThreshold(1024 * 4);
//设置上传文件用到临时文件存放路径
String temppath = this.getServletContext().getRealPath(
"/WEB-INF/temp/");
File temp = new File(temppath);
//如果不设置存放路径,那么临时文件将被储存在"java.io.tmpdir"这个JVM环境属性所指定的目录中,tomcat 5.5.9将这个属性设置为了“<tomcat安装目录>/temp/”目录。
((DiskFileItemFactory) factory).setRepository(temp);
ServletFileUpload sfu = new ServletFileUpload(factory);
//设置单个文件的最大限制
sfu.setSizeMax(1024 * 1024 * 3);
//将页面请求传递信息最大值设置为50M
//upload.setSizeMax(1024*1024*50);
try {
//解析数据
List<FileItem> list = sfu.parseRequest(request);
Iterator<FileItem> iter = list.iterator();
while (iter.hasNext()) {
FileItem item = iter.next();
if (item.isFormField()) {//如果是普通表单
String filedname = item.getFieldName();
if (filedname.equals("filedname")) {
out.print(item.getString("utf-8"));
}
} else {
String filename = item.getName();
if (filename != null && filename != "") {
List<String> filetype = Arrays.asList("gif", "bmp", "jpg");
//从.后面+1下表截取到末尾,再忽略大写
String ext = filename.substring(
filename.lastIndexOf(".") + 1)
.toLowerCase();
if (!filetype.contains(ext)) {
out.print("上传失败,文件类型只能是gif、bmp、jpg");
} else {
File file = new File(item.getName());
String filepath = "/WEB-INF/upload/";
filepath = this.getServletContext()
.getRealPath(filepath);
File savefile = new File(filepath,
file.getName());
item.write(savefile);
out.print(item.getFieldName() + "上传成功!文件大小是:" + item.getSize()+ "bytes!");
}
}
}
}
} catch (FileUploadBase.SizeLimitExceededException ex) {
out.print("上传文件失败,文件太大,单个文件的最大限制是:" + sfu.getSizeMax()+ "bytes!");
} catch (Exception e) {
e.printStackTrace();
}
}
用Commons-FileUpload组件实现文件上传的更多相关文章
- 模拟文件上传(二):使用apache fileupload组件进行文件上传
其中涉及到的jar包: jsp显示层: <%@ page language="java" import="java.util.*" pageEncodin ...
- 使用commons-fileupload-1.2.1.jar等组件实现文件上传
使用的主要jar包:commons-io-1.3.2.jar包;commons-fileupload-1.2.1.jar包:commons-lang-2.3.jar,在使用组件实现文件上传时候要注意前 ...
- jquery组件WebUploader文件上传用法详解
这篇文章主要为大家详细介绍了jquery组件WebUploader文件上传用法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 WebUploader是由Baidu WebFE(FEX)团队开发的一 ...
- jsp实现文件上传(二)用cos组件实现文件上传
jsp表单 <%@ page language="java" pageEncoding="utf-8"%> <html> <hea ...
- MVC文件上传-使用jQuery.FileUpload和Backload组件实现文件上传
本篇使用客户端jQuery-File-Upload插件和服务端Badkload组件实现多文件异步上传.MVC文件上传相关兄弟篇: 处理文件上传的服务端组件Backload 用于处理文件上传的服务端组件 ...
- Commons组件实现文件上传与下载
一.文件上传 所需jar包 首先是commons-fileupload.jar包 其次是commons-IO.jar包 前者的使用依赖后者,两者缺一不可 实现 前台要求 在前台提交的form表单请求方 ...
- dwz+jquery+fileupload+springmvc实现文件上传 及图片预览
1 前台jsp:文件的上传利用了iframe实现局部刷新功能.使用了apache的fileupload组件,用到的jar: commons-fileupload.jar,commons-io.jarD ...
- 百度Web Uploader组件实现文件上传(一)
Web Uploader WebUploader是由Baidu WebFE(FEX)团队开发的一个简单的以HTML5为主,FLASH为辅的现代文件上传组件.在现代的浏览器里面能充分发挥HTML5的优势 ...
- Java使用Commons-FileUpload组件实现文件上传最佳方案
学习的目标 使用commons-fileupload实现文件上传 使用commons-fileupload封装文件上传工具类 什么是commons-fileupload? The CommonsF ...
- 百度Web Uploader组件实现文件上传之分片上传(一)
当网络问题导致传输错误时,只需要重传出错分片,而不是整个文件.另外分片传输能够更加实时的跟踪上传进度.多的不说了直接怼代码 前端是三个监听:一个是获取md5,一个是分片,最后一个是合并代码 <! ...
随机推荐
- [dpdk] 读开发指南(1)
该文档是随着对于文档的阅读进度,不断增加的阅读笔记.主要内容以大纲为主,以及记录帮助记忆的内容. 在之后的实际应用中,也不随着不断的深入理解,逐渐丰富各大纲下面的内容. 1. 前期准备:设置两个环境变 ...
- 如何在外网中访问自己在另一个局域网中的某个机器(SSH为例)
UBUNTU 14.04 LTS 为例 如何在外网中访问自己在另一个局域网中的某个机器(SSH为例) 2013-05-01 16:02 2693人阅读 评论(0) 收藏 举报 情景描述: 计算机C1放 ...
- iftop ifstat
ifstat 介绍 ifstat工具是个网络接口监测工具,比较简单看网络流量 实例 默认使用 #ifstat eth0 eth1 KB/s in KB/s out KB/s in KB/s out 0 ...
- 位与(&)常用编程技巧
补充知识:1)正整数的补码与原码相同: 2)求负整数的补码:原码 符号位不变,数值位各位取反,最后整个数加1得到补码: 3)按位与& ...
- ArcGIS中添加进自定义的ttf字符标记符号
原文:ArcGIS中添加进自定义的ttf字符标记符号 ArcGIS系统中的样式可能不能满足实际生产需要,为了实现快速制图,可自定义一些样式,以便重复利用. 1. 制作的符号库 使用 FontCre ...
- ArcGIS API for Silverlight代码中使用Template模板
原文:ArcGIS API for Silverlight代码中使用Template模板 在项目开发中,会遇到点选中聚焦闪烁效果,但是因为在使用Symbol的时候,会设置一定的OffSetX和OffS ...
- 【转】android Graphics(四):canvas变换与操作
android Graphics(四):canvas变换与操作 分类: 5.andriod开发2014-09-05 15:05 5877人阅读 评论(18) 收藏 举报 目录(?)[+] 前言 ...
- http请求及模拟浏览器发送http请求
/** *测试新增图片 * @throws IOException * @throws HttpException * @throws SAXException * @th ...
- synzhronized原理3
1.java中的每个对象都可作为锁,有三种表现形式: 对于普通方法,锁的是当前this对象. 对于静态方法,锁的是class对象 对于方法块,锁的是synchronized指定的对象. 2.JVM基于 ...
- How to delete expired archive log files using rman?
he following commands will helpful to delete the expired archive log files using Oracle Recovery Man ...