web应用中的文件上传

在web应用中实现文件上传

JspSmartUpload组件简介:JspSmartUpload是一个可免费使用的全功能的文件上传,下载组件,适于嵌入执行上传、下载操作的JSP文件中。该组件有以下几个特点:

1.使用简单、方便。在JSP文件中仅书写3~5行java代码就可以实现文件的上传或下载。

2能全程控制上传。利用JspSmartUpload组件提供的对象及操作方法,可以获得全部文件的信息(包括文件名、大小、类型、扩展名、文件数据等),方便存取。

3能对上传的文件在大小、类型等方面进行限制,这样就可以滤掉不符合要求的文件。

4下载灵活。仅写2行代码,就能web服务器变成文件服务器,不管文件在web目录下还是在其它目录下,都可以利用JspSmartUpload进行下载。

JspSmartUpload可以从网上下载。下载后,得到jspsmartupload.jar文件,将此文件放置于需要使用该组件的站点的WEB/INF/lib目录下,重新启动服务器就可以使用。

JspSmartUpload组件的相关类和方法:

(一)File类

该类封装了一个上传文件的所有信息。通过它,可以得到上传文件的文件名,文件大小,扩展名,文件数据等信息。

File类主要提供以下方法:

1saveAs()方法,作用:将文件换名另存(另存为:)

原型:public void saveAs(java.lang.String destFilePathName)或者public void saveAs(java.lang.String destFilePathName,int optionSaveAs)其中,destFilePathName另存的文件名,optionSaveAs是另存的选项,该选项有三个值,分别为SAVEAS_PHYSICAL,SAVEAS_VIRTUAL和SAVEAS_AUTO。SAVEAS_PHYSICAL表示以操作系统的根目录为文件根目录另存文件,SAVEAS_VIRTUAL表示以web应用程序的根目录为文件根目录另存文件,SAVEAS_AUTO表示让组件决定,当web应用程序的根目录存在另存文件的根目录时,它会选择SAVEAS_VIRTUAL,否则会选择SAVEAS_PHYSICAL。例如:saveAS(/upload/sample.zip,SAVEAS_PHYSICAL)执行后若web服务器安装在c盘,则另存的文件名实际是c:\upload\sample.zip.而saveAs(/upload/sample.zip,SAVEAS_VIRTRUL)执行后若web目录的根目录是webapps/jspsmartupload,则另存的文件名实际是webapps/jspsmartupload/upload/sample.zip.

saveAs(/upload/sample/zip,SAVEAS_AUTO)执行后若web应用程序根目录下存在upload目录,则其效果同saveAs(/upload/sample.zip,SAVE_VIRTUAL),否则同saveAs(/upload/sample.zip,SAVE_PHYSICAL)

建议:对web应用程序的开发者来说,最好使用SAVEAS_PHYSICAL,便于移植。

2isMissing()方法

作用:该方法用于判断用户是否选择了文件,也就是对应的表单项是否有值,选择文件时,它返回false;未选择文件时,它返回true。

原型:public boolean isMissing()

3getFieldName()方法

作用:取HTML表单中对应于此上传文件的表单项的名字。

原型:public String getFieldName()

4getFileName()方法

作用:取文件名(不含目录信息)

原型:public String getFileName()

5getFilePathName()

作用:取文件全名(带目录)

原型:public String getFilePathName()

6getFileExt()

作用:取文件扩展名(后缀)

原型:public String getFileExt()

7getSize()

作用:取文件长度(以字节计算)

原型:public int getSize()

8getBinaryData()

作用:取文件数据中指定位移处的1个字节,用于检测文件等处理。

原型:public byte getBinaryData(int index)其中,index表示位移,其值在0到getSize()-1之间。

  • Files类

该类表示所有上传文件的集合,通过它可以得到上传文件的数目、大小等信息。

Files类主要提供以下方法。

1getCount()

作用:取得上传文件的数目。

原型:public Int getCount()

2getFile()

作用:取得指定位移处的文件对象File(是com.jspsmart.upload.File,而不是java.io.File,要注意区分)

原型:public File getFile(int index)其中,index为指定位移,其值在0到getCount()-1之间

3getSize()

作用:取得上传文件的总长度,可用于限制一次性上传的数据量大小

原型:public long getSize()

4getCollection()

作用:将所有上传文件对象以Collection的形式返回,以便其它应用程序引用,浏览上传信息。

原型:public Collection getCollection()

5getEnumeration()

作用:将所有上传文件对象以Enumeration(枚举)形式返回,以便其它应用程序浏览上传信息

原型:public Enumeration getEnumeration()

(三)Request类

这个类的功能等同于JSP内置的对象request,这里之所以提供这个类,是因为对于文件上传表单,通过request对象无法无法获得表单项的值,即必须通过JspSmartUpload组件提供的request对象

Request类主要提供以下方法。

1getParameter()方法

作用:获取指定参数之值,当参数不存在时,返回null

原型:public String getParameter(String name)

2getParameterValues(String name)

作用:当一个参数可以有多个参数值时,用此方法来取其值。他返回的是一个字符串数组,当参数不存在时,返回值为null

原型:public String[] getParameterValues(String name)

3getParameterNames()

获取request对象中所有参数的名字,用于便利所有参数。他返回的是一个枚举类型的对象

原型:public Enumeration getParameterNames()

(四)SmartUpload类

该类完成上传,下载工作。

1.1上传于下载共用的方法只有一个,即initialize()方法

作用:执行上传、下载的初始化工作,必须第一个执行。

原型:有多个,主要使用:public final void initialize(javax.servlet.jsp.PageContext  pageContext).其中,pageContext为jsp页面内置对象(页面上下文)

1.2上传文件使用的方法如下

1-----Upload()

作用:上传文件数据。对于上传操作,第一步执行initialize()方法,第二步执行upload()方法。

原型:public void upload()

  1. ----save()方法

作用:将全部上传文件保存到指定目录下,并返回保存的的文件个数。

原型:public int save(String destPathName)和public int save(String destPathName,int option)

其中,destPathName为文件保存目录,option为保存选项,同样的,他有三个值:SAVE_PHYSICAL,SAVE_VIRTUAL,SAVE_AUTO

(同File类的saveAs()方法的选项之值类似)。SAVE_PHYSICAL指示组件将文件保存到以操作系统根目录为文件根目录的目录下。SAVE_VIRTUAL指示组件将文件保存到以web应用程序根目录为文件目录的目录下,而SAVE_AUTO则表示有组件自行选择。

注:save(destPathName)作用等同于save(destPathName,SAVE_AUTO)的作用。

3-----getSize()方法

作用:获取上传文件数据的总长度

原型:public int getSize()

  1. ----getFiles()方法

作用:获取全部上传文件,以Files对象形式返回,可以利用Files类的操作方法来获得上传文件的数目等信息

原型:public Files getFiles()

  1. ----getRequest()方法

作用:获取request对象,以便由此对象获的上传表单参数之值

原型:public Request getRequest()

  1. ----setAllowedFilesList()方法

设置允许上传带有指定扩展名的文件,当上传过程中有文件名不允许时,组件将抛出异常。

原型:public void setAllowedFilesList(String allowedFilesList)

其中,allowedFilesList为允许上传的文件扩展名列表,各个参数扩展名之间以逗号分隔。如果想上传那些没有扩展名的文件,可以用两个逗号表示。例如:setAllowedFileList(doc,txt,,)将允许上传带有doc和txt扩展名的文件,以及没有扩展名的文件。

  1. ----setDeniedFilesList()

作用:用于限制上传那些带有指定扩展名的文件。若有文件名被限制,则上传时组件将抛出异常。

原型:public void setDeniedFilesList(String deniedFilesList)

其中deniedFilesList为禁止上传的文件扩展名列表,各个扩展名之间以逗号隔开,同样,如果想禁止上传那些没有扩展名的文件,则可以用两个括号来表示。例如:setDeniedFilesList(exe,bat,,)将禁止上传带有exe和bat扩展名的文件,以及没有扩展名的文件。

  1. ----setMaxFileSize()方法

作用:设置每个文件允许上传的最大长度

原型:public void setMaxFileSize(long maxFileSize)

其中,maxFileSize为每个文件允许上传的最大长度,文件超出次长度将不被上传。

  1. ----setTotalMaxFileSize()方法

作用:设定允许上传的文件的总长度,用于限定一次性上传的文件的数据量大小。

原型:public void setTotalMaxFileSize(long totalMaxFileSize)

其中,totalMaxFileSize为允许上传的文件总长度。

1.3下载文件常用的方法

  1. ----setContentDisposition()方法

作用:将数据追加到MIME文件头的CONTENT-DISPOSITION域。JspSmartUpload组件会在返回下载信息时自动填写MIME文件头的CONTENT-DISPOSTION域,如果用户需要添加额外的信息,请用此方法。

原型:public void setContentDispostion(String contentDispostion)

其中contentDispositon为要添加的数据,如果contentDisposition为null,则组件将自动添加“attachment”,以表明将下载的文件作为附件,IE浏览器就会提示另存文件,而不是自动打开这个文件(IE浏览器一般根据下载的文件扩展名决定执行什么操作,扩展名为doc的文件将用word程序打开,扩展名为.pdf的文件将用Acrobat程序打开等)

  1. ----downloadFile()方法

作用:下载文件

原型:共有一下三个原型可用,第一个最常用,后两个用于特殊的文件下载(如更改内容类型,更改另存的文件名)

Public void downloadFile(String sourceFilePathName)

其中,sourceFilePathName为要下载的文件名(带目录的文件名)

Public void downloadFile(String sourceFilePathName,Sting contentType)

其中,sourceFilePathName为要下载的文件名(带目录的文件名),contentType为内容类型(MIME格式的文件类型信息,可被浏览器识别)

Public void downloadFile(String sourceFilePathName,String contentType,String destFileName)

其中,sourceFilePathName为要下载的文件名(带目录的文件全名),contentType为内容类型(MIME格式的文件类型信息,可被浏览器识别),destFileName为下载后的另存文件名。

你可能感兴趣的:(web应用中的文件上传)