jsp 使用Common-FileUpload组件文件上传及限制上传类型
1、将commons-fileupload-1.3.3.jar复制到Web应用的lib文件夹下,在WebRoot目录下创建limit.jsp页面,在该页面中添加一个文件域的表单,设置类型为 multipart/form-data。代码如下:
<body>
<h2>上传图书课件</h2>
<form action="LimitFile" name="one" enctype="multipart/form-data" method="post">
选择一个rar文件:
<input type="file" name="fileupload" value="upload" />
<input type="submit" value="上传"> <input type="reset" value="取消">
</form>
</body>
上述代码指定提交后将请求提交给LimitFile处理,LimitFile(Servlet)用来处理上传文件及判断文件类型是否匹配,显示上传结果。
2、创建名为LimitFile的Servlet,并在doPost()方法中编写实现代码,如下所示:
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
response.setContentType("text/html");
PrintWriter out = response.getWriter();
String uploadpath = "";
DiskFileItemFactory factory = new DiskFileItemFactory();
//设置是否使用临时文件保存解析出来的数据的那个临界值,该方法传入参数的单位是字节。
factory.setSizeThreshold(30 * 1024);
//用于设置setSizeThreshold()方法中提到的临时文件的存放目录,这里要求使用绝对路径。
factory.setRepository(factory.getRepository());
ServletFileUpload upload = new ServletFileUpload(factory);
List list = null;
try{
list = upload.parseRequest(request);
String[] limit = new String[]{".jpg", ".gif", ".png", ".bmp"};
//定义限制的文件类型
SuffixFileFilter filter = new SuffixFileFilter(limit);
//获取SuffixFileFilter实例
Iterator iterator = list.iterator();
while(iterator.hasNext()){
FileItem item =(FileItem)iterator.next();
if(!item.isFormField()){
String filePath = item.getName();
if(filePath != null){
File filename= new File(filePath);
File uploadFile = new File(request.getSession().getServletContext().getRealPath("/") + "upload");
uploadpath = uploadFile.getAbsolutePath()+File.pathSeparator + uploadpath;
//因为路径后面多了个";"号,所以要去掉
uploadpath = uploadpath.substring(0, uploadpath.length()-1);
File saveFile = new File(uploadpath,filename.getName());
boolean flag = filter.accept(saveFile);
if(flag){
out.print("禁止上传传图片文件");
break;
}else{
try {
item.write(saveFile);
out.print("文件上传成功");
} catch (Exception e) {
out.print("文件上传失败了");
e.printStackTrace();
}
}
}
}
}
}catch(FileUploadException e){
e.printStackTrace();
}
}
上述代码在字节串数组limit中定义了不允许上传的文件类型,然后将该数组传递给SuffixFileFilter类的构造函数。在通过该类的accept()方法验证当前上传的文件是否符合条件。最后将文件保存到项目的upload目录下。
jsp 使用Common-FileUpload组件文件上传及限制上传类型的更多相关文章
- JSP文件上传--FileUpload组件
如果使用上传操作,并且没有使用框架之类,最好使用Smartupload,因为FileUpdate太难使用. 下载组件: fileupload包:http://commons.apache.org/pr ...
- jsp简易文件上传(common.fileupload)
昨天开始重新架构我的V&View(维视),之前写文章使用的是一个kindediter的插件,挺好用的.最近不知道咋了,出现了些小问题.早在写V&View的时候就想用以下两种方法实现文章 ...
- .JavaWeb文件上传和FileUpload组件使用
.JavaWeb文件上传 1.自定义上传 文件上传时的表单设计要符合文件提交的方式: 1.提交方式:post 2.表单中有文件上传的表单项:<input type="file" ...
- 实现文件上传功能(FileUpload组件)
文件上传: 项目中经常用到文件上传. 自己实现文件上传,使用文件上传组件fileupload组件 1.指定表单类型为文件上传, enctype=”multipart/form-data” 2.提交方式 ...
- 使用 fileupload 组件完成文件的上传应用
1. 使用 fileupload 组件完成文件的上传应用 commons-dbutils-1.3.jarcommons-fileupload-1.2.1.jar 1). 需求: > 在 uplo ...
- 模拟文件上传(三):使用apache fileupload组件进行文件批量上传
其中涉及到的jar包 jsp显示层: <%@ page language="java" import="java.util.*" pageEncoding ...
- 文件上传使用FileUpload组件进行代码实现
使用FileUpload组件进行代码实现 实现步骤 1. 获取解析器工厂: DiskFileItemFactory 2. 获取解析器对象: ServletFileUpload 3. 解析request ...
- jsp\struts1.2\struts2 中文件上传(转)
jsp\struts1.2\struts2 中文件上传 a.在jsp中简单利用Commons-fileupload组件实现 b.在struts1.2中实现c.在sturts2中实现现在把Code与大家 ...
- Spring MVC使用commons fileupload实现文件上传功能
通过Maven建立Spring MVC项目,引入了Spring相关jar依赖. 1.为了使用commons fileupload组件,需要在pom.xml中添加依赖: <properties&g ...
随机推荐
- HTLM5新增属性
1.<meta http-equiv="Pragma" content="no-cache"/> //禁止页面缓存 2.<script def ...
- React-native初体验(安卓篇)
本篇文章主要包括两方面,如何从0开始把RN(react-native)项目整合进入现有Android项目,以及我们做的第一个RN的上线项目遇到的一些坑. 初次做RN项目,我们选择做了一个逻辑相对简单的 ...
- Objectiv-c - UICollectionViewLayout自定义布局-瀑布流
最近刚写的一个简单的瀑布流. 整体思路可能不是很完善. 不过也算是实现效果了. 高手勿喷 思路: 自定义UICollectionViewLayout实际上就是需要返回每个item的fram就可以了. ...
- Spring源码情操陶冶-AbstractApplicationContext#registerBeanPostProcessors
承接前文Spring源码情操陶冶-AbstractApplicationContext#invokeBeanFactoryPostProcessors 瞧瞧官方注释 /** * Instantiate ...
- 项目中ApplicationContext
applicationContext说白了就是对beanFactory的扩展,也就是一个spring容器,而且applicationContext是单例的,项目中主要包含一个webApplicatio ...
- 基于vue的颜色选择器color-picker
项目中有用到颜色选择器的童鞋们可以看过来了 关于color-picker的jquery的插件是有蛮多,不过vue组件没有吧,反正我没有找到, 虽然element-ui里面有这个,但是你愿意为了一个小功 ...
- Azure 认知服务 (4) 计算机视觉API - 读取图片中的文字 (OCR)
<Windows Azure Platform 系列文章目录> 微软Azure认知服务的计算机视觉API,还提供读取图片中的文字功能 在海外的Windows Azure认知服务的读取图片功 ...
- Nginx配置抵御DDOS或CC攻击
防攻击的思路我们都明白,比如限制IP啊,过滤攻击字符串啊,识别攻击指纹啦.可是要如何去实现它呢?用守护脚本吗?用PHP在外面包一层过滤?还是直接加防火墙吗?这些都是防御手段.不过本文将要介绍的是直接通 ...
- IntelliJ IDEA javaDoc的使用
文档注释的风格看个人主要说一下在idea中如何配置和使用快捷的文档注释 1.想像Eclipse一样使用 /**来写文档注释可以通过settings下的Live Templates来设置如下图所示 ja ...
- C#使用Xamarin开发可移植移动应用(2.Xamarin.Forms布局,本篇很长,注意)附源码
前言 系列目录 C#使用Xamarin开发可移植移动应用目录 源码地址:https://github.com/l2999019/DemoApp 可以Star一下,随意 - - 一点感想 很意外的,第一 ...