1、File 类这 个 类 包 装 了 一 个 上 传 文 件 的 所 有 信 息 。 通 过 它 , 可 以 得 到 上 传 文 件 的文 件 名 、 文 件 大 小 、 扩 展 名 、 文 件 数 据 等 信 息 。 File 类 主 要 提 供 以 下 方 法 : 1、 saveAs 作 用 : 将 文 件 换 名 另 存 。 原 型 : public void saveAs(java.lang.String destFilePathName) 或 public void saveAs(java.lang.String destFilePathName, int optionSaveAs)
2、其 中 , destFilePathName 是 另 存 的 文 件 名 , optionSaveAs 是 另 存 的 选项 , 该 选 项 有 三 个 值 , 分 别 是SAVEAS_PHYSICAL,SAVEAS_VIRTUAL, SAVEAS_AUTO。 SAVEAS_PHYSICAL 表 明以 操 作 系 统 的 根 目 录 为 文 件 根 目 录 另 存 文 件 , SAVEAS_VIRTUAL 表 明 以 Web应 用 程 序 的 根 目 录 为 文 件 根 目 录 另 存 文 件 , SAVEAS_AUTO 则 表 示 让 组 件 决定 , 当 Web 应 用 程 序 的 根 目
3、 录 存 在 另 存 文 件 的 目 录 时 , 它 会 选 择SAVEAS_VIRTUAL, 否 则 会 选 择 SAVEAS_PHYSICAL。 例 如 , saveAs(“/upload/sample.zip“,SAVEAS_PHYSICAL)执 行 后 若Web 服 务 器 安 装 在 C 盘 , 则 另 存 的 文 件 名 实 际 是 c:uploadsample.zip。而 saveAs(“/upload/sample.zip“,SAVEAS_VIRTUAL)执 行 后 若 Web 应 用 程序 的 根 目 录 是 webapps/jspsmartupload, 则 另 存 的 文
4、 件 名 实 际 是webapps/jspsmartupload/upload/sample.zip。 saveAs(“/upload/sample.zip“,SAVEAS_AUTO)执 行 时 若 Web 应 用 程 序 根 目 录 下 存 在 upload 目 录 , 则 其效 果 同 saveAs(“/upload/sample.zip“,SAVEAS_VIRTUAL), 否 则 同saveAs(“/upload/sample.zip“,SAVEAS_PHYSICAL)。 建 议 : 对 于 Web 程 序 的 开 发 来 说 , 最 好 使 用 SAVEAS_VIRTUAL, 以 便
5、移植 。 2、 isMissing 作 用 : 这 个 方 法 用 于 判 断 用 户 是 否 选 择 了 文 件 , 也 即 对 应 的 表 单 项 是 否有 值 。 选 择 了 文 件 时 , 它 返 回 false。 未 选 文 件 时 , 它 返 回 true。 原 型 : public boolean isMissing() 3、 getFieldName 作 用 : 取 HTML 表 单 中 对 应 于 此 上 传 文 件 的 表 单 项 的 名 字 。 原 型 : public String getFieldName() 4、 getFileName 作 用 : 取 文 件 名
6、( 不 含 目 录 信 息 ) 原 型 : public String getFileName() 5、 getFilePathName 作 用 : 取 文 件 全 名 ( 带 目 录 ) 原 型 : public String getFilePathName 6、 getFileExt 作 用 : 取 文 件 扩 展 名 ( 后 缀 ) 原 型 : public String getFileExt() 7、 getSize 作 用 : 取 文 件 长 度 ( 以 字 节 计 ) 原 型 : public int getSize() 8、 getBinaryData 作 用 : 取 文 件 数
7、 据 中 指 定 位 移 处 的 一 个 字 节 , 用 于 检 测 文 件 等 处 理 。 原 型 : public byte getBinaryData(int index)。 其 中 , index 表 示位 移 , 其 值 在 0 到 getSize()-1 之 间 。 Files 类这 个 类 表 示 所 有 上 传 文 件 的 集 合 , 通 过 它 可 以 得 到 上 传 文 件 的 数 目 、 大小 等 信 息 。 有 以 下 方 法 : 1、 getCount 作 用 : 取 得 上 传 文 件 的 数 目 。 原 型 : public int getCount() 2、 g
8、etFile 作 用 : 取 得 指 定 位 移 处 的 文 件 对 象 File( 这 是com.jspsmart.upload.File, 不 是 java.io.File, 注 意 区 分 ) 。 原 型 : public File getFile(int index)。 其 中 , index 为 指 定 位 移 ,其 值 在 0 到 getCount()-1 之 间 。 3、 getSize 作 用 : 取 得 上 传 文 件 的 总 长 度 , 可 用 于 限 制 一 次 性 上 传 的 数 据 量 大 小 。 原 型 : public long getSize() 4、 getC
9、ollection 作 用 : 将 所 有 上 传 文 件 对 象 以 Collection 的 形 式 返 回 , 以 便 其 它 应 用程 序 引 用 , 浏 览 上 传 文 件 信 息 。 原 型 : public Collection getCollection() 5、 getEnumeration 作 用 : 将 所 有 上 传 文 件 对 象 以 Enumeration( 枚 举 ) 的 形 式 返 回 , 以 便其 它 应 用 程 序 浏 览 上 传 文 件 信 息 。 原 型 : public Enumeration getEnumeration() Request 类这 个
10、 类 的 功 能 等 同 于 JSP 内 置 的 对 象 request。 只 所 以 提 供 这 个 类 , 是因 为 对 于 文 件 上 传 表 单 , 通 过 request 对 象 无 法 获 得 表 单 项 的 值 , 必 须 通过 jspSmartUpload 组 件 提 供 的 Request 对 象 来 获 取 。 该 类 提 供 如 下 方 法 : 1、 getParameter 作 用 : 获 取 指 定 参 数 之 值 。 当 参 数 不 存 在 时 , 返 回 值 为 null。 原 型 : public String getParameter(String name)
11、。 其 中 , name 为参 数 的 名 字 。 2、 getParameterValues 作 用 : 当 一 个 参 数 可 以 有 多 个 值 时 , 用 此 方 法 来 取 其 值 。 它 返 回 的 是 一个 字 符 串 数 组 。 当 参 数 不 存 在 时 , 返 回 值 为 null。 原 型 : public String getParameterValues(String name)。 其 中 ,name 为 参 数 的 名 字 。 3、 getParameterNames 作 用 : 取 得 Request 对 象 中 所 有 参 数 的 名 字 , 用 于 遍 历 所
12、 有 参 数 。 它 返回 的 是 一 个 枚 举 型 的 对 象 。 原 型 : public Enumeration getParameterNames() SmartUpload 类 这 个 类 完 成 上 传 下 载 工 作A 上 传 与 下 载 共 用 的 方 法 : 只 有 一 个 : initialize。 作 用 : 执 行 上 传 下 载 的 初 始 化 工 作 , 必 须 第 一 个 执 行 。 原 型 : 有 多 个 , 主 要 使 用 下 面 这 个 : public final void initialize(javax.servlet.jsp.PageContext
13、 pageContext) 其 中 , pageContext 为 JSP 页 面 内 置 对 象 ( 页 面 上 下 文 ) 。 B 上 传 文 件 使 用 的 方 法 : 1、 upload 作 用 : 上 传 文 件 数 据 。 对 于 上 传 操 作 , 第 一 步 执 行 initialize 方 法 ,第 二 步 就 要 执 行 这 个 方 法 。 原 型 : public void upload() 2、 save 作 用 : 将 全 部 上 传 文 件 保 存 到 指 定 目 录 下 , 并 返 回 保 存 的 文 件 个 数 。 原 型 : public int save(S
14、tring destPathName) 和 public int save(String destPathName,int option) 其 中 , destPathName 为 文 件 保 存 目 录 , option 为 保 存 选 项 , 它 有 三 个值 , 分 别 是 SAVE_PHYSICAL,SAVE_VIRTUAL 和 SAVE_AUTO。 ( 同 File 类 的saveAs 方 法 的 选 项 之 值 类 似 ) SAVE_PHYSICAL 指 示 组 件 将 文 件 保 存 到 以 操作 系 统 根 目 录 为 文 件 根 目 录 的 目 录 下 , SAVE_VIRT
15、UAL 指 示 组 件 将 文 件 保 存到 以 Web 应 用 程 序 根 目 录 为 文 件 根 目 录 的 目 录 下 , 而 SAVE_AUTO 则 表 示 由组 件 自 动 选 择 。 注 : save(destPathName)作 用 等 同 于 save(destPathName,SAVE_AUTO)。3、 getSize 作 用 : 取 上 传 文 件 数 据 的 总 长 度 原 型 : public int getSize() 4、 getFiles 作 用 : 取 全 部 上 传 文 件 , 以 Files 对 象 形 式 返 回 , 可 以 利 用 Files 类的 操
16、作 方 法 来 获 得 上 传 文 件 的 数 目 等 信 息 。 原 型 : public Files getFiles() 5、 getRequest 作 用 : 取 得 Request 对 象 , 以 便 由 此 对 象 获 得 上 传 表 单 参 数 之 值 。 原 型 : public Request getRequest() 6、 setAllowedFilesList 作 用 : 设 定 允 许 上 传 带 有 指 定 扩 展 名 的 文 件 , 当 上 传 过 程 中 有 文 件 名 不允 许 时 , 组 件 将 抛 出 异 常 。 原 型 : public void setA
17、llowedFilesList(String allowedFilesList) 其 中 , allowedFilesList 为 允 许 上 传 的 文 件 扩 展 名 列 表 , 各 个 扩 展 名之 间 以 逗 号 分 隔 。 如 果 想 允 许 上 传 那 些 没 有 扩 展 名 的 文 件 , 可 以 用 两 个 逗 号表 示 。 例 如 : setAllowedFilesList(“doc,txt,“)将 允 许 上 传 带 doc 和txt 扩 展 名 的 文 件 以 及 没 有 扩 展 名 的 文 件 。 7、 setDeniedFilesList 作 用 : 用 于 限 制
18、上 传 那 些 带 有 指 定 扩 展 名 的 文 件 。 若 有 文 件 扩 展 名 被 限制 , 则 上 传 时 组 件 将 抛 出 异 常 。 原 型 : public void setDeniedFilesList(String deniedFilesList) 其 中 , deniedFilesList 为 禁 止 上 传 的 文 件 扩 展 名 列 表 , 各 个 扩 展 名 之间 以 逗 号 分 隔 。 如 果 想 禁 止 上 传 那 些 没 有 扩 展 名 的 文 件 , 可 以 用 两 个 逗 号 来表 示 。 例 如 : setDeniedFilesList(“exe,ba
19、t,“)将 禁 止 上 传 带 exe 和 bat扩 展 名 的 文 件 以 及 没 有 扩 展 名 的 文 件 。 8、 setMaxFileSize 作 用 : 设 定 每 个 文 件 允 许 上 传 的 最 大 长 度 。 原 型 : public void setMaxFileSize(long maxFileSize) 其 中 , maxFileSize 为 为 每 个 文 件 允 许 上 传 的 最 大 长 度 , 当 文 件 超 出 此长 度 时 , 将 不 被 上 传 。 9、 setTotalMaxFileSize 作 用 : 设 定 允 许 上 传 的 文 件 的 总 长
20、度 , 用 于 限 制 一 次 性 上 传 的 数 据 量 大小 。 原 型 : public void setTotalMaxFileSize(long totalMaxFileSize) 其 中 , totalMaxFileSize 为 允 许 上 传 的 文 件 的 总 长 度 。 C 下 载 文 件 常 用 的 方 法 1、 setContentDisposition 作 用 : 将 数 据 追 加 到 MIME 文 件 头 的 CONTENT-DISPOSITION 域 。jspSmartUpload 组 件 会 在 返 回 下 载 的 信 息 时 自 动 填 写 MIME 文 件
21、头 的CONTENT-DISPOSITION 域 , 如 果 用 户 需 要 添 加 额 外 信 息 , 请 用 此 方 法 。 原 型 : public void setContentDisposition(String contentDisposition) 其 中 , contentDisposition 为 要 添 加 的 数 据 。 如 果contentDisposition 为 null, 则 组 件 将 自 动 添 加 “attachment;“, 以 表 明将 下 载 的 文 件 作 为 附 件 , 结 果 是 IE 浏 览 器 将 会 提 示 另 存 文 件 , 而 不 是
22、自 动打 开 这 个 文 件 ( IE 浏 览 器 一 般 根 据 下 载 的 文 件 扩 展 名 决 定 执 行 什 么 操 作 ,扩 展 名 为 doc 的 将 用 Word 程 序 打 开 , 扩 展 名 为 pdf 的 将 用 acrobat 程 序 打开 , 等 等 ) 。 2、 downloadFile 作 用 : 下 载 文 件 。 原 型 : 共 有 以 下 三 个 原 型 可 用 , 第 一 个 最 常 用 , 后 两 个 用 于 特 殊 情 况 下的 文 件 下 载 ( 如 更 改 内 容 类 型 , 更 改 另 存 的 文 件 名 ) 。 public void down
23、loadFile(String sourceFilePathName) 其 中 , sourceFilePathName 为 要 下 载 的 文 件 名 ( 带 目 录 的 文 件 全 名 ) public void downloadFile(String sourceFilePathName,String contentType) 其 中 , sourceFilePathName 为 要 下 载 的 文 件 名 ( 带 目 录 的 文 件 全 名 ) ,contentType 为 内 容 类 型 ( MIME 格 式 的 文 件 类 型 信 息 , 可 被 浏 览 器 识 别 ) 。 public void downloadFile(String sourceFilePathName,String contentType,String destFileName) 其 中 , sourceFilePathName 为 要 下 载 的 文 件 名 ( 带 目 录 的 文 件 全 名 ) ,contentType 为 内 容 类 型 ( MIME 格 式 的 文 件 类 型 信 息 , 可 被 浏 览 器 识 别 ) ,destFileName 为 下 载 后 默 认 的 另 存 文 件 名 。