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

3.11 getFile 文件上传

    Controller提供了getFile系列方法支持文件上传。

    如果用到了文件上传功能,需要添加一个 maven 依赖:

<dependency>
    <groupId>com.jfinal</groupId>
    <artifactId>cos</artifactId>
    <version>2022.2</version>
</dependency>


    注意版本问题:jfinal 4.9.18 版本支持大于 2G 的文件上传,从该 jfinal 版本开始,cos 必须升级到 2022.2 及其未来的更高版本,否则文件上传功能无法使用。这里要注意早于 4.9.18  的 jfinal 只能使用 cos 2020.4 以及更早其的 cos 版本。

    最新版白名单支持:jfinal 5.2.2 版本开始,新增了白名单机制,默认只支持如下文件类型的上传:

// 压缩
"rar", "zip", "gzip", "tar", "gz", "dmg",

// 图片
"jpg", "png", "jpeg", "webp", "svg", "bmp",

// 文本
"css", "js", "json", "xml", "md", "txt",

// 文档
"pdf", "doc", "docx", "xls", "xlsx", "pot", "ppt", "pptx", "wps",

// 音频
"mp3", "mp2", "m3u", "m3u8", "ra", "mpga", "ram", "wav", "wax", "wma",

// 视频
"mp4", "mpeg", "avi", "wvm", "3gp", "asf", "asx", "flv", "mps", "pmv", "mov", "mpa", "mpe", "m4e", "m2v", "ts"

     如果需要支持更多类型的文件上传,可使用以下方法配置:

UploadConfig.addWhitelist(文件类型在此);


    特别注意:如果客户端请求为multipart request(form表单使用了enctype="multipart/form-data"),那么必须先调用getFile系列方法才能使getPara系列方法正常工作,因为multipart request需要通过getFile系列方法解析请求体中的数据,包括参数。同样的道理在Interceptor、Validator中也需要先调用getFile。

     文件默认上传至项目根路径下的upload子路径之下,该路径称为文件上传基础路径。可以在 JFinalConfig.configConstant(Constants me)方法中通过me.setBaseUploadPath(baseUploadPath) 设置文件上传基础路径,该路径参数接受以”/”打头或者以windows磁盘盘符打头的绝对路径,即可将基础路径指向项目根径之外,方便单机多实例部署。当该路径参数设置为相对路径时,则是以项目根为基础的相对路径。