JSP组件commons-fileupload实现文件上传
作者:lijiao 发布时间:2023-07-03 03:16:01
标签:JSP,commons,fileupload,文件上传
本文实例为大家分享了JSP使用commons-fileupload实现文件上传代码,供大家参考,具体内容如下
1、准备:
将commons-fileupload-1.1.zip和commons-io-1.1.zip复制到"\WEB-INF\lib"目录下
2、首先是Servlet: FileUpload.java
package servlet;
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.*;
import java.util.regex.Pattern;
import java.util.regex.Matcher;
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 FileUpload extends HttpServlet {
private String uploadPath="E:\\addnetFile\\";//要上传文件的目录
private File tempPath=new File("E:\\tempFile\\");//存放上传的文件的目录
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=GB2312");
response.setCharacterEncoding("gb2312");
PrintWriter out=response.getWriter();
out.println("请求内容的长度为:"+request.getContentLength());
out.println("请求内容的类型为:"+request.getContentType());
DiskFileItemFactory factory=new DiskFileItemFactory();
factory.setRepository(tempPath);
factory.setSizeThreshold(4096);
ServletFileUpload upload=new ServletFileUpload(factory);
upload.setSizeMax(1000000);
List<?> fileitems=null;
try{
fileitems=upload.parseRequest(request);
Iterator<?> iterator=fileitems.iterator();
String regex=".+\\\\(.+)$";
String[] errortype={".exe",".com",".cgi",".asp"};
Pattern p=Pattern.compile(regex);
while(iterator.hasNext()){
FileItem item=(FileItem) iterator.next();
if(!item.isFormField()){
String name=item.getName();
long size=item.getSize();
if(name==null||name.equals("")&&size==0)
continue;
Matcher m=p.matcher(name);
if(m.find()){
for(int temp=0;temp<errortype.length;temp++){
if(m.group(1).endsWith(errortype[temp]))
throw new IOException(name+":wrong type");
}
try{
item.write(new File(tempPath,m.group(1)));
out.println(name+" "+size+"<br/>");
out.println("上传成功");
}catch(Exception e){
out.println("333"+e);
}
}
else{
throw new IOException("fail to upload");
}
}
}
}catch(IOException e){
out.println("222"+e);
}
catch(FileUploadException e1){
e1.printStackTrace();
out.println("111"+e1);
}
}
public void init() throws ServletException {
if(!new File(uploadPath).isDirectory())
new File(uploadPath).mkdir();
if(!tempPath.isDirectory())
tempPath.mkdir();
}
public void destroy(){
super.destroy();
}
}
3、其次是html:Uploadfile.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Uploadfilel.html</title>
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="this is my page">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
</head>
<body>
<form action="/Firstjsp/servlet/FileUpload" method="post" enctype="multipart/form-data" name="form1">
<input type="file" name="file"/>
<input type="submit" name="submit" value="upload"/>
</form>
<form action="/Firstjsp/servlet/FileUpload" method="post" enctype="multipart/form-data" name="uploadform">
<table>
<tr>
<td>
文件1:<input type="file" name="X" size="40"/>
</td>
</tr>
<tr>
<td>
文件2:<input type="file" name="Y" size="40"/>
</td>
</tr>
<tr>
<td>
文件3:<input type="file" name="Z" size="40"/>
</td>
</tr>
</table>
<input type="submit" name="upload" value="开始上传"/>
</form>
</body>
</html>
4、最后是配置web.xml
<servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<servlet-name>FileUpload</servlet-name>
<servlet-class>servlet.FileUpload</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>FileUpload</servlet-name>
<url-pattern>/servlet/FileUpload</url-pattern>
首先运行html,servlet处理上传请求


猜你喜欢
- 本章来实现一下删除已上传文件,同时优化了一下第一章中的代码。废话少说,上代码得意1.调整列表页面list.jsp<%@ page co
- 文章前言每周五上午十二点前需要将项目上各组开发分支合并软集仓库分支, 需要在十个项目上进行 merge程序员一般都是 很讨厌麻烦, 所以编写
- 目录前期准备界面编写截图功能实现OCR实现内容显示总结前期准备在这个阶段主要准备整个小程序的结构,既然要实现ocr,那么输入就是一张图片,而
- 1.C语言实现1.1代码说明a 创建双向链表:在创建哈夫曼树的过程中,需要不断对结点进行更改和删除,所以选用双向链表的结构更容易
- 一、用属性替代 getter 或 setter 方法以下代码中包含手动实现的 getter(get_ohms) 和 setter(set_o
- 手动安装python3.6只需要将其ppa源加入apt仓库列表即可,但是最近常用的一个源 ppa:jonathonf/python
- 怎样压缩sql server2000的数据库备份文件,像rar一样?小弟有一7m的sql server2000 数据库备
- 一、前提由于我安装了几次,我就不再讲述报错了,有点打脑壳!!!提前把相关依赖和报错就地解决。1、所需源码包mysql-8.0.19.tar.
- 当系统出现故障时,只要存在数据日志那么就可以利用它来恢复数据解决数据库故障。作为SQL Server数据库管理员,了解数据日志文件的作用,以
- axios的二次封装视频讲解npm i axios //下载axios首先创建两个文件夹在src目录下;api和c
- 对于开发使用到数据库的应用,免不了就要使用联合查询,SQL中常用的联合查询有inner join、outer join和cross join
- 一、layui下拉复选实现的背景:实现一个管理员拥有多个权限二、 具体实现://依赖资源<link rel="stylesh
- 1.什么是虚拟DOM 以前M的命令式操作DOM即使用jQuery操作DOM节点,随着状态的增多,DOM的操作就会越来越频繁,程序的
- 引言通常,您可能希望在 Pandas DataFrame 中插入一个新列。幸运的是,使用 pandas insert()函数很容易做到这一点
- 一、安装Docker安装环境:系统:CentOS Linux7 x86_64安装脚本wget -qO- https://get.docker
- 1. 介绍目的:公司的支付宝小程序向指定用户发送红包。场景:积分兑换、邀请注册。2.开通权限2.1开通服务说明:进入支付宝商家中心 → 营销
- 前文学习:python数据类型: python数据结构:数据类型.python的输入输出: python数据结构输入输出及控制和异常.pyt
- pytorch的广播语义(broadcasting semantics),和numpy的很像,所以可以先看看numpy的文档:1、什么是广播
- JavaScript中,对象的extensible属性用于表示是否允许在对象中动态添加新的property。ECMAScript 3标准中,
- 前言:之前自己做一个uni-app的项目的时候前端需要实现一个比较复杂的动态tab和swiper切换的功能,但是由于自己前端抠脚的原因没有写