1 快速上手

2 JFinalConfig

3 Controller

4 AOP

5 ActiveRecord

6 Enjoy 模板引擎

7 EhCachePlugin

8 RedisPlugin

9 Cron4jPlugin

10 Validator

11 国际化

12 Json 转换

13 JFinal架构及扩展

14 升级到 4.4

3.8 renderFile 文件下载

1、renderFile 基本用法

? ? renderFile 系列方法用于下载文件。

? ? renderFile 方法使用一个 baseDownloadPath 参数为基础路径去寻找文件。以标准的 maven 项目为例,该参数默认值指向目录:src/main/webapp/download

? ? 以下是在默认配置下的使用示例:

//?最终下载文件为:src/main/webapp/download/file.zip
renderFile("file.zip");

//?最终下载文件为:src/main/webapp/download/abc/def/file.zip
renderFile("abc/deb/file.zip");

? ? 如上所示,最终下载文件总是:baseDownloadPath + renderFile 传入的参数

? ? baseDownloadPath 的存在相当于固定了一个基础路路径。renderFile 总是以该路径为基础路径去寻找文件。


2、配置 baseDownloadPath

? ? baseDownloadPath 还可以在 configConstant(Constants me) 中自由配置,例如:

me.setBaseDownloadPath("files");

? ? 以标准的 maven? 项目为例,以上配置的 baseDonwnloadPath 值将指向目录 src/main/webapp/files。

? ? 此外,还可以将 baseDownloadPath 配置为绝对路径,那么该路径将跳出项目之外,例如:

//?linux、mac?系统以字符?"/"?打头是绝对路径
me.setBaseDownloadPath("/var/download");

//?windows?系统以盘符打头也是绝对路径
me.setBaseDownloadPath("D:/download");

? ? 以上配置 Linux 下以 "/" 打头则表示是绝对路径,那么 renderFile 将去该路径 "/var/download" 之下去寻找下载文件。

? ? 这种配置可以跳出项目之外,便于项目资源与下载资源进行分离,也便于集群部署(单机多实例部署)时多个节点可以共享同一个目录,共享同一份下载文件。


3、renderFile(File file)

? ? renderFile(File file) 方法直接使用 File 参数去获取下载文件,可脱离 baseDownloadPath 的束缚,指向任意地点的文件,例如:

String?file?=?"D:/my-project/share/files/jfinal-all.zip";
renderFile(new?File(file));

? ? 如上所示,File 指向了一个任意地点的文件,跳出了 baseDownloadPath 的束缚。


4、为下载文件重新命名

? ?如果不想使用下载文件原有的文件名,还可以指定新的下载文件名:

renderFile("老文件名.txt",?"新文件名.txt");