几种上传方法(jspsmart,o`reilly,struts)介绍和比较(原创)

原创 2004年10月10日 11:18:00

几种上传方法介绍、比较<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


 作者:王智伟

2004-10-10

    

1 引言

2 O`RrillyCos.

3 jspsmartUpload.

4 Jakarta Apache Struts upload.

5 几种方法的比较

 

 

1 引言

一个网站总是不可避免的要和用户进行信息的交互,倘若是从窗体传送一般的简单输入类型(例如:textpasswordradiocheckboxselect等等)的信息到服务器端时,只要使用application/x-www-form-urlencoded的编码方式用session传递就可以了。但是当涉及到和用户之间的文件交换(包括上传和下载)时,就不是那么简单了。在上传文件到服务器时,必须要使用multipart/form-data的编码方式,并且不能直接使用request.getParameter()来取得。至于所使用的方法有很多种,比如:jspsmart公司的jspsmartupload组件,O`Rrilly公司的cos组件,Jakarta Apache公司的commonsFileUpload组件,JavaZoomuploadbean组件,还有Struts组件中自带的org.apache.struts.upload类工具等等。下面就针对其中的三种解决方案(jspsmartuploadO`Reilly-cosstruts.upload)做一个简单的介绍和对比。

2 O`RrillyCos

Cos组件是O`Rrilly公司开发的,该组件免费,不定期增加新功能,开源。

<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />

1 O`RrillyCos

Cos组件中,MultipartRequest类主要负责文件上传的处理。MultipartRequest8个构造函数:

1.Public MultipartRequest ( HttpServletRequest request, String saveDirectory,) throws IOException

2.Public MultipartRequest ( HttpServletRequest request, String saveDirectory, int maxPostSize) throws IOException

3.Public MultipartRequest ( HttpServletRequest request, String saveDirectory, int maxPostSize, FileRenamePolicy policy) throws IOException

4.Public MultipartRequest ( HttpServletRequest request, String saveDirectory, int maxPostSize, String encoding) throws IOException

5.Public MultipartRequest ( HttpServletRequest request, String saveDirectory, int maxPostSize, String encoding, FileRenamePolicy policy) throws IOException

6.Public MultipartRequest ( HttpServletRequest request, String saveDirectory, String encoding) throws IOException

7.Public MultipartRequest ( HttpServletRequest request, String saveDirectory) throws IOException

8.Public MultipartRequest ( HttpServletRequest request, String saveDirectory, int maxPostSize) throws IOException

6种构造函数都是用来专门处理HTTP协议的,saveDirectory是上传文件要存储在服务器端的目录名称;maxPostSize是用来限制用户上传文件大小的,若超过maxPostSzie,会产生IOException,默认上传文件大小是1MBencoding可以设定用何种编码方式来上传文件名称,可以解决中文问题。

MultipartRequest类工具有8种方法,利用这些方法,我们可以取得请求的相关信息:

Public Enumeration getParameterNames()

可以取得请求参数的名称

public String getParameter(String name)

此方法传回参数为name的值

public String[] getParameterValues(String name)

此方法主要用在取得当一指定参数具有多个值时,它会传回String的数组

public Enumeration getFileName()

传回所有文件输入类型的名称

public String getFilesystemNames(String name)

用此方法得到上传文件的真正的文件名,这里的name指文件输入类型的名称

public String getContentType(String name)

此方法得到上传文件的内容类型

public File getFile(String name)

此方法得到一个文件对象,代表储存在服务器上的name文件

public String getOriginalFileName(String name)

返回文件在修改政策有效之前的文件名

3 jspsmartUpload

Jspsmartupload组件是由jspsmart公司开发的,安装好它的组件以后,就可以处理文件上传及下载的问题。该组件简单好用,免费,但是源码不公开。

Jspsmartupload Overview

Free  免费的

upload 1or more files to the server  可上传1个或多个文件

upload to a database  上传文件到数据库

control the upload file by file  可以一列一列的(一个个)控制上传

manage mixed forms files +form fields  可以管理表格文件和表格域

download a file  可以实现文件下载

download a database field  可以从数据库中下载

restrict file size , extension etc  可以限制上传文件的尺寸和类型

MacBinary support  MckBinary的支持

Platform: Apache, NT, Unix, Linux, IIS 可以在多种平台上运行

Database : MySQL , Oracle……  支持多种数据库(最支持MySQL

整个jspsmartupload压缩包113K,包括有范例、API说明和编译好的class文件,调用这些class文件就可以实现文件的上传下载功能。

2 jspsmartUpoad

Jspsmartupload能实现比O`RrillyCos更多的方法,比如有:

1.public int getSize()方法得到上传文件大小的总和

2.public void setDeniedFilesList(String deniedFilesList)方法设定用户不可上传的类型

3.public void setAllowedFilesList(String allowedFilesList)方法设定用户可上传的文件类型

4.public void setTotalMaxFileSize(Long totalMaxFilesList)设定一次上传文件大小总和

5.public int getCount()得到Files中的文件个数

6.public Boolean isMissing()测试文件是否确实已经存在

7.public String getFieldName()得到此File在前一个HTML文件中的表格名称

8.public String getFilePathName()得到此File在上传端的文件位置

9.public String getFileExt()得到文件的扩展名

………….

Jspsmartupload的安装:只需把这些class文件拷贝到classes文件夹中即可。

4 <?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />Jakarta Apache Struts upload

由于本人现在的项目是用Struts结构开发的,所以利用Struts自带的类工具实现上传,这能和工程整体结合的很好,不需要导入其他的包,并且功能强大,使用简单,性能稳定且开源,所以无疑是最佳的选择。

下图是Strutsupload包的结构。基本上要实现上传功能,只要用到FormFilesMultipartRequestHandler接口就可以解决了。

3  Struts-upload包的结构

基本处理流程是,从页面中传递文件到Form中,然后从Action得到Form中的文件,形成InputStream,然后通过OutputStream写入磁盘。

同样,Strutsupload工具类也可以实现对上传文件大小和类型的控制,可以同时上传多个文件等等。

5 几种方法的比较

 

O`Rrilly-Cos

jspsmartUpload

Struts-upload

是否开源

是否免费

是否继续开发

不明

功能

一般

可靠性

一般

 

 

 

 

特点综述

免费,开源,不定期增加新功能,可靠性高,代码直接写在jsp文件中

简单好用,可上传、下载,功能强大,免费,但是源码不公开,代码直接写在jsp文件中。上传时,文件先预读入内存,当接到save指令时才保存到磁盘,所以上传的性能和文件及内存的大小关系密切。

Struts中使用极为方便,免费,开源,可靠性高,表示层和业务层分离,有后台的FormAction

1 几种上传方法的比较

在研究比较这几种上传组件之后,我认为不管用其中的哪一种都能满足我的要求,毕竟我们要实现的仅仅是文件上传的功能。最基本的,只要能将文件取得File格式的,就能实现各种各样的功能。

结论是,就Struts项目而言,使用Struts-upload组件是最贴切的选择;如果要做封装的话,最好选择jspsmartUploadO`Rrilly-Cos


资源:
1、O`Reilly cos 组件下载地址:http://www.servlets.com/cos/cos-05Nov2002.zip
2、因为Jspsmart已经停止开发,其官方网站已经关闭,所以JspsmartUpload组件在网上几乎绝迹,有毅力的读者可以去google上搜一下,肯定也是能搜到的,如果嫌麻烦就留下Email,我给你发过去,113k
3、Struts-upload组件在Apache的Struts1.1里面有,可以去www.apache.org下载

用O’Reilly公司的cos实现文件上传

O'Reilly公司的Java HTTP文件上传组件,简单实用,做的非常好。 COS 很久没更新了,不过这东西也没什么好更新的。本站就是采用COS作为文件上传的组件。 index.html ...
  • hil2000
  • hil2000
  • 2012年05月20日 14:39
  • 1278

377本O'Reilly英文原版电子书下载分享

OReilly - .NET Framework Essentials 3rd Edition     [chm]OReilly - .NET Windows Forms in a Nutshell ...
  • wlh19890104
  • wlh19890104
  • 2009年09月05日 13:04
  • 2032

O'Reilly:Head First设计模式(中文版)(奋斗的小鸟)_PDF 电子书

下载地址:http://pan.baidu.com/share/link?shareid=779150766&uk=721744522   内容简介     强大的写作阵容。《Head Fi...
  • tjoy2005
  • tjoy2005
  • 2013年10月07日 18:07
  • 1272

【O'Reilly Data Show】机器学习将如何加速数据管理系统

编者注:更多人工智能内容请关注O'Reilly和Intel人工智能2018北京大会。请点击下方“阅读原文”,收听本次Data Show全文。How machine learning will acce...
  • zkh880loLh3h21AJTH
  • zkh880loLh3h21AJTH
  • 2017年12月23日 00:00
  • 78

O'Reilly 的经典IT图书全集下载

source: http://spaces.msn.com/leaderwu/  OReilly 的经典IT图书全集下载 ...
  • yuanqingfei
  • yuanqingfei
  • 2006年04月09日 10:07
  • 12789

分享:制作属于自己的O'REILLY“动物书”封面

个人是非常喜欢O'REILLY的“动物书”系列。      也陆陆续续买了很多本。      无意间发现的这个网站。      可以制作属于自己的封面。      http://oreilly...
  • sweeper_freedoman
  • sweeper_freedoman
  • 2017年02月28日 04:25
  • 1137

几种上传方法介绍、比较

转载至 ghostmanxp1 引言一个网站总是不可避免的要和用户进行信息的交互,倘若是从窗体传送一般的简单输入类型(例如:text、password、radio、checkbox、select等等)...
  • youjianbo_han_87
  • youjianbo_han_87
  • 2008年10月23日 10:57
  • 475

O'Reilly图书中国站点的图书源码下载链接

OReilly图书中国站点 --->http://www.oreilly.com.cn/OReilly图书中国站点的图书源码下载链接http://www.oreilly.com.cn/cod...
  • yanwei
  • yanwei
  • 2004年09月18日 11:46
  • 526

O'Reilly人工智能大会将于2018年4月10-13日来到北京:讲师征集开始

继在纽约和旧金山成功售罄门票后,由O'Reilly主办的人工智能大会将于2018年4月10-13日来到北京。 人工智能大会北京站以中文普通话进行,提供独具深度和广度的技术内容——重点放在...
  • zkh880loLh3h21AJTH
  • zkh880loLh3h21AJTH
  • 2017年09月29日 00:00
  • 294

Java I/O (O'Reilly Java)

Java I/O (OReilly Java)ISBN: 1565924851 | PDF | 1.9 Mb (rar) | 473 Pages | OReilly Media; (March 1, ...
  • linhanshi
  • linhanshi
  • 2007年03月24日 11:18
  • 605
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:几种上传方法(jspsmart,o`reilly,struts)介绍和比较(原创)
举报原因:
原因补充:

(最多只允许输入30个字)