jfinal getFile().renameTo() 无法更改文件名称+文件路径自动放到了upload默认路径

后端上传方法:

private final int MAX_SIZE = 1 * 1024 * 1024; // 1M
private String T_PATH = PathKit.getWebRootPath() + "\\upload\\t\\";

public void index() {
   Map<String, Object> map = new HashMap<String, Object>();
   UploadFile file = getFile("file");
   String fileName = "";
   try {
       if (file.getFile().length() > MAX_SIZE) {
           map.put("code", 1);
           System.err.println("文件长度超过限制,必须小于" + MAX_SIZE + "M");
           return;
       } else {
           //上传文件
           String type = file.getFileName().substring(file.getFileName().lastIndexOf(".")); // 获取文件的后缀
           fileName = UUID.randomUUID() + type; // 对文件重命名取得的文件名+后缀
           file.getFile().renameTo(new File(T_PATH + "\\" + fileName));
           String realFile = T_PATH + "\\" + fileName;
           System.out.println(realFile);
           map.put("code", 0);
           map.put("image", realFile);
       }
   } catch (Exception e) {
       map.put("code", 1);
       e.printStackTrace();
   }
   renderJson(map);
}

前端上传事件:前端使用layui的上传插件

uploadInst = upload.({
    : : : (obj) {
        obj.((indexfileresult) {
            $().(result)})}
    : (res) {
        (res.> ) {
            layer.()}
        }
    : () {
        demoText = $()demoText.()demoText.().(() {
            uploadInst.upload()})}
})

处理结果:返回路径为:D:\IDEA\NewDemo\src\main\webapp\upload\touxiang\\4edc480a-3c8c-4463-a0fb-9fd59a74086a.jpg

image.png

实际路径并没有放到指定文件夹,文件名称也未更改成功

评论区

kongss

2018-02-08 13:57

JFinal

2018-02-08 14:44

File.renameTo(...) 这个方法是 JDK 的 API , 这个是 jfinal 无法控制的,参考 JDK 的文档即可打完收工

kongss

2018-02-08 14:59

@JFinal File.renameTo(...)这个方法 我这边试过了如果同级路径就可以重新命名此抽象路径名表示的文件。 如果我放在/upload/t 这个文件路径下文件就不会处理。

JFinal

2018-02-08 15:12

@kongss 始终要相信这是 java.io.File 这个类中的方法,自然就知道如何解决了

lucky_lei

2019-05-16 17:28

@JFinal 解决不了啊

minemine

2020-02-23 16:00

我也遇到了同样的问题,请问如果不能用renameTo的话,还有什么方式可以更改文件名称@JFinal

热门反馈

扫码入社