日期:2014-05-16  浏览次数:20376 次

jsp中jspSmartUpload实现上传下载例子 以及功能实现过程中出现问题解决办法

项目要有一个上传下载的功能,以前都是用struts自带的。。这次准备用jspSmartUpload这个组件..现在还不知道怎么用..但是办法总是有的..

?

其实最好就是在网上找一个例子.直接用..谁知道在网上找了将近个把个小时竟然没有....唉。

?

jspSmartUpload组件中的主要类:

?

在jspSmartUpload组件中主要包含了File、Files、Request和SmartUpload核心类,下面对这些核心类进行介绍。

表13.1 File类中的常用方法

?

File类

该类不同于java.io.File类,在编写程序时应注意使用。File类用于保存单个上传文件的相关信息。如上传文件的文件名、文件大小、文件数据等,表13.1列出了File类中的常用方法。

?

?

方 法

?

说 明

?

saveAs()

?

用于保存文件

?

isMissing()

?

用于判断用户是否选择了文件,即表单中对应的<input type="file">标记实现的文件选择域中是否有值。该方法返回boolean型值,选择了文件时,返回False;否则返回True

?

getFieldName()

?

获取Form表单中当前上传文件所对应的表单项的名称

?

getFileName()

?

获取文件的文件名,该文件名不包含目录

?

getFilePathName()

?

获取文件的文件全名,获取的值是一个包含目录的完整文件名

?

getFileExt()

?

获取文件的扩展名,即后缀名,不包含“.”符号

?

getContentType()

?

获取文件MIME类型,如“text/plain”

?

getContentString()

?

获取文件的内容,返回值为String型

?

getSize()

?

获取文件的大小、单位字节,返回值为int型

?

getBinaryData(int index)

?

返回值为byte,获取文件数据中参数index指定位置处的一个字节,用于检测文件等处理

?

Files类中的saveAs()方法用于保存文件,在File类中提供了两种形式的saveAs()方法:

?

l saveAs(String destFilePathName)方法。

?

ll saveAs(String destFilePathName, int optionSaveAs)方法。

?

这两个方法没有返回值,第一种形式与saveAs(destFilePathName, 0)执行效果相同。

?

?

?

参数说明

?

l destFilePathName:指定文件保存的路径,包括文件名。其值应以“/”开头。

?

l optionSaveAs:保存目标选项。该选项有3个值,分别是SAVEAS_AUTO、SAVEAS_ VIRTUAL和SAVEAS_PHYSICAL。它们是File类中的静态字段,分别表示整数0、1和2。将optionSaveAs参数设为SAVEAS_VIRTUAL选项值,则通知jspSmartUpload组件以Web应用的根目录为文件根目录,然后加上destFilePathName参数指定的路径来保存文件;设为SAVEAS_PHYSICAL值,则一种情况是通知jspSmartUpload组件将以Web服务器的安装路径中的磁盘根目录为文件根目录,然后加上destFilePathName参数指定的路径来保存文件,另一种情况则以destFilePathName参数指定的目录为最终目录来保存文件;设为SAVEAS_AUTO值,则首先以SAVEAS_VIRTUAL方式来保存文件,若Web应用下由destFilePathName参数指定的路径不存在,则以SAVEAS_PHYSICAL方式保存文件。

例如,若Web服务器(以Tomcat为例)的安装目录为“E:\Tomcat 5.5”,当前Web应用为“FileUpDown”,下面分别应用这3个选项保存文件。

?

(1)使用SAVEAS_VIRTUAL选项值。

?

saveAs("/file/myfile.txt",File.SAVEAS_VIRTUAL)或saveAs("/file/myfile.txt",1)

?

若FileUpDown应用下存在“file”子目录,则将上传的文件以“myfile.txt”为文件名进行保存,实际的保存路径如下:

?

E:\Tomcat 5.5\webapps\FileUpDown\file\myfile.txt

?

若不存在“file”子目录,则抛出下面的异常:

?

This path does not exist (1135)

?

(2)使用SAVEAS_PHYSICAL选项值。

?

saveAs("/file/myfile.txt",File.SAVEAS_PHYSICAL)或saveAs("/file/myfile.txt",2)

?

因为Tomcat 5.5安装在E盘,因此若E盘根目录下存在“file”子目录,则将上传的文件以“myfile.txt”为文件名进行保存,实际的保存路径如下:

?

E:\file\myfile.txt

?

若E盘根目录下不存在“file”子目录,而FileUpDown应用的根目录下存在“file”子目录,则抛出下面的异常:

?

The path is not a physical path

?

否则抛出下面的异常:

?

This path does not exist (1135)

?

使用SAVEAS_PHYSICAL选项值时,可以将上传的文件保存到由destFilePathName参数指定的一个具体的目录下,例如:

?

saveAs("D:/temp/myfile.txt",File.SAVEAS_PHYSICAL)

?

最终文件的实际保存路径如下:

?

D:\temp