开发者社区> 问答> 正文

java极速web+orm框架Jfinal 之 上传文件

在上传文件时,我们需要设置form表单 ENCTYPE= "multipart/form-data "

在controller中,获取文件时 UploadFile uf = getFile(x,x,x,x);

此时,上传至服务器的文件名保持不变,即test.doc ,保存在服务器的文件名依然为test.doc

那么我想采用时间戳来为服务器上的文件命名时,暂不能实现。

而且在这个表单中的其它字段值,采用getPara(X),是得不到的(null)

基于以上问题:
1、建议在getFile时,多传一个参数(重命名是否支持,或者直接为新文件名)

<span style="font-size:16px;">multipartRequest = new  com.oreilly.servlet.MultipartRequest(request, saveDirectory, maxPostSize, encoding, fileRenamePolicy);</span>

以上为原代码,这里需要修改的是 fileRenamePolicy
重新定义一个实现了 FileRenamePolicy 接口的类 UploadFileRenamePolicy ,重写rename方法
public class UploadFileRenamePolicy implements FileRenamePolicy

2、o'reilly组件 MultipartRequest 对象. getParameter("");来获得我们需要的字段值
在原抽象类中,私有成员MultipartRequest没有get set方法,先添加。
然后,在我们的controll中get MultipartRequest().getParameter(x)

注意:这里的get MultipartRequest()需要在getFile()之后,因为在getFile()时, MultipartRequest才会被初始化

以上只是学习时的,临时补救方法。

展开
收起
小旋风柴进 2016-06-08 12:58:44 3300 0
1 条回答
写回答
取消 提交回答
  • 想采用时间戳来为服务器上的文件命名时,可以这样:

    UploadFile uf = getFile();
    File file = uf.getFile();
    2019-07-17 19:31:40
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Web应用系统性能优化 立即下载
高性能Web架构之缓存体系 立即下载
PWA:移动Web的现在与未来 立即下载