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 升级到 3.8

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");