关于文件上传临时目录的清理问题

文档https://doc.cuba-platform.cn/manual-7.2-chs/file_upload.html中提到
cuba_FileUploading bean 的 clearTempDirectory() 方法由cuba-web-spring.xml文件中定义的定时任务周期性调用来清理临时存储。
请问这个定义是需要手动添加吗?

不需要,已经定义好了。

cuba 是开源框架,源码可以自己看的哦~

我的意思是,还需要我手动配置让他启用吗?如果是默认启用,执行周期是什么?

不需要手动配置。
默认情况下,会在周二、周四、周六的晚上 0 点执行,删除保存时间大于 2 天的所有文件。

我有地方可以改这个策略吗?

这个计划任务是普通的 Spring schedule 可以尝试在你项目的 web-spring.xml 中重新定义这个计划任务:

// 注意需要引入 xmlns:task="http://www.springframework.org/schema/task" namespace
    <task:scheduled-tasks scheduler="scheduler">
        <task:scheduled ref="cuba_FileUploading" method="clearTempDirectory" cron=<你的 cron 或者用fixed-rate>/>
    </task:scheduled-tasks>
1 个赞

非常感谢!

再问一下,这个计划是否只删除WEB下的临时文件,CORE下面的不会清理?

这个方法清理的是 GlobalConfig 的 cuba.tempDir 目录。这个配置所有模块最好配置成一样的。

怎么可能一样啊,core和web是两个应用啊

cuba.tempDir在web模块和core模块默认就是不同的目录啊

所以建议配置成一样的嘛,是存储临时文件的,没有关系。

clearTempDirectory() 方法是在 com.haulmont.cuba.gui 也就是以前的 gui 模块定义的。core 用不了。

core和web可能部署在两台服务器。。。。那就是说这个默认的计划只是在web模块有效,而core模块里是没有这个默认的计划,需要自己来干,对吧

对的。其实也简单。源码都在 com/haulmont/cuba/gui/upload/FileUploading.java 文件。

感谢!