个sevlet实现文件上传
来源:互联网 发布:攻击路由器软件 编辑:程序博客网 时间:2024/06/05 04:03
闲来无事,写一个sevlet实现文件上传!
大部分人喜欢用别人写好的包,如commons-fileupload-1.2.2.jar,来实现文件上传,还有另外有一个包smartupload包 ,这两种方式!
http协议文件上传,通过设置页面中的form的参数enctype为multipart/form-data,参数method="post"来实现文件上传,具体可以参考http文档,RFC_2616_HTTP_1[1].1_超文本传输协议_中文版。servlet通过request.getInputStream()得到输入文件流;参数通过request.getAttribute("name");,切记不要用request.getParameter("name").为啥,各位可以百度一下方法区别。文件可以通过得到文件名(通过request.getAttribute("fileName")),再加路径可以得到new File(FilePath,FileName)。本例可以通过新建一个对像new ParseServletInputStream(HttpServletRequest request,String FilePath),或new ParseServletInputStream(request)来解析输入流,并能通过此类删除上传的文件
本列主要有四个类,分别为ParseServletInputStream.java,ParseRequest.java,BodyRequest,AnnotationLogger;一个接口MultipartParameter定义输入流中的参数。
1.ParseServletInputStream类主要用来接收request,设置文件保存路径及删除上传文件。
源码中设置了两个此类构造方法,一个只有一个参数(request),一个另带一个文件路径的构造方法。源码如下:
2.ParseRequest是一个解析输入流抽像类
定义了一些解析流的公共方法。输入流中的参数有两种,一种参数内型是文件(input type="file "),另一种是参数类型是字符串(<input type="text"> ),参数内型是文件头要解析四行,参数类型是字符串头要解析三行,具体可参考http协议。所以抽象类定义解析四行方法,还有两个共用的方法,解析空行的和清空参数,源文件如下:
3.BodyRequest用来解析输入流
BodyRequest有两个内部类(FileRequest,ParameterRequest)都继承了ParseRequest,FileRequest主要用来解析流是文件类型的类,,ParameterRequest主要用来解析是参数 的类
4.MultipartParameter接口主要定义文件上传参数类型
可以参考http协议,主要定义一些http协议参数名称,源码如下
5.AnnotationLogger类用来注释掉logger和去掉注释掉logger
此类主要用来增加,或删除源文件中的loger输出,如果要logger输出,要增加log4j包,本列版本是log4j-1.2.15.jar
6.应用工程例子
源文件如上,工程下载,可以把项目引入到myeclipse,布暑到tomcat中。通过index.jsp提交form上传文件,FileUpLoad类是(servlet)接收输入流,处理结果通过response输出页面。
index.jsp运行页面如下
servlet接收如下:
文件保存在图片:
如果看不明白,可加Q(4758 2019),如要转载,请注名出处!
- 个sevlet实现文件上传
- sevlet上传文件代码
- 实现多个文件上传
- struts实现多个文件上传功能
- struts+hibernate实现多个文件上传
- 实现多个文件同时上传
- JSP实现任意个文件上传
- Asp.net实现多个文件上传
- Asp.net实现多个文件上传
- html实现上传多个文件预览
- 上传下载(sevlet实现)
- js实现上传多个图片或者多个文件
- FileUpload框架实现文件上传(多个文件)和下载
- Flex中实现多个文件上传时发生只能上传第一个文件的问题
- sevlet
- sevlet
- 多个文件上传
- 上传多个文件
- 数据库相关的网址
- 关于对java异步编程的思考。
- 【BZOJ1014】[JSOI2008]火星人prefix
- QT浏览目录打开文件
- Action的详解
- 个sevlet实现文件上传
- ActionForm的详解
- javascript基于对象编程基础
- poj 1860 -- Currency Exchange(最短路)
- WIN7+VMWARE+fedora18 samba服务器的搭建
- Oracle delete高水位线处理问题
- 网络游戏程序中解决加载卡顿的有效方法
- 关于saveFileDialog使用的时候出现的问题
- bash脚本运行错误-Bad for loop variable(ubuntu)