jfinal 2.2无法自定义上传文件的路径与名称

BenChao 发布于 2016/08/27 23:10
阅读 863
收藏 0

在页面中上传excel文档,然后导入数据,但是上传的时候就出现问题,无法把文件保存到自定义目录也无法自定义文件名。

以下为controller代码

public void importData(){
        String fileName = PathKit.getWebRootPath() + "/Upload/Excel/" + "student_" + Tools.getUUID() + ".xls";

        UploadFile file = getFile("fileStudent");

        file.getFile().renameTo(new File(fileName));


        setAttr("info", fileName);
        render("importStudent.jsp");
    }



文件成功上传了,但是在web目录的upload目录下,而且文件名并没有修改。

我想达到的目的是把文件上传到web目录下的Upload/Excel/ 而且文件名是用UUID命名的。

求解

加载中
0
JFinal
JFinal

    jfinal 自 2.1 版本开始,基于很多考虑对上传路径的规则进行了调整,在使用 getFile(...) 时传入的路径只当作是相对路径,不被当成是绝对路径。

    解决办法是先使用 me.setBaseUploadPath(baseUploadPath) 设置合适的基础路径,然后在 getFile 时不传入相对路径则会将文件上传至此,使用相对路径时也将相对于 baseUploadPath 放在其子目录下。

    假如 baseUploadPath 设置为根路径,例如linux 之下: me.setBaseUploadPath("/") ,则在 getFile(..., "a/b/c/d") 时相当于可以指定任意目录为上传目录

JFinal
JFinal
回复 @BenChao : 没错,可以用 renameTo(...),不过要注意在 linux 下, renameTo 无法跨磁盘改名
BenChao
BenChao
那自定义文件名呢? 还是需要renameTo()方法吧?
0
BenChao
BenChao

引用来自“JFinal”的评论

    jfinal 自 2.1 版本开始,基于很多考虑对上传路径的规则进行了调整,在使用 getFile(...) 时传入的路径只当作是相对路径,不被当成是绝对路径。

    解决办法是先使用 me.setBaseUploadPath(baseUploadPath) 设置合适的基础路径,然后在 getFile 时不传入相对路径则会将文件上传至此,使用相对路径时也将相对于 baseUploadPath 放在其子目录下。

    假如 baseUploadPath 设置为根路径,例如linux 之下: me.setBaseUploadPath("/") ,则在 getFile(..., "a/b/c/d") 时相当于可以指定任意目录为上传目录

文件保存的路径已经成功修改了,但是还是没法自定义文件名,使用renameTo()不起作用,求解。
BenChao
BenChao
回复 @JFinal : 好吧,终于可以了,我待上传文件放在桌面,项目在另外一个磁盘的。我把文件放回那个磁盘就可以了,谢谢!
BenChao
BenChao
回复 @JFinal : 我的电脑是2个磁盘的,系统盘独立一个磁盘的,其他的分区都是一个磁盘的,项目在F盘,这会有关系?
JFinal
JFinal
是不是跨磁盘了? renameTo 的目标磁盘要与当前的磁盘一样,否则使用 copy 的方式将文件 copy 过去
返回顶部
顶部