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

发布于 2021-12-04 00:22:08 字数 652 浏览 853 评论 7

在页面中上传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命名的。

求解

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

成熟稳重的好男人 2021-12-04 01:16:17

是不是跨磁盘了? renameTo 的目标磁盘要与当前的磁盘一样,否则使用 copy 的方式将文件 copy 过去

酒几许 2021-12-04 01:16:12

回复
我的电脑是2个磁盘的,系统盘独立一个磁盘的,其他的分区都是一个磁盘的,项目在F盘,这会有关系?

岁月打碎记忆 2021-12-04 01:16:02

回复
好吧,终于可以了,我待上传文件放在桌面,项目在另外一个磁盘的。我把文件放回那个磁盘就可以了,谢谢!

英雄似剑 2021-12-04 01:16:00

引用来自“JFinal”的评论

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

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

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

风透绣罗衣 2021-12-04 01:14:43

那自定义文件名呢? 还是需要renameTo()方法吧?

回忆凄美了谁 2021-12-04 01:14:16

回复
没错,可以用 renameTo(...),不过要注意在 linux 下, renameTo 无法跨磁盘改名

秋意浓 2021-12-04 01:08:47

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

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

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文