这几天在公司上班的时候要解决之前老员工给我丢下的一个问题,就是我通过本地上传文件时上传正常,然后打包成jar包部署到服务器上时,测试发现 文件是传过来了,但是传过来的文件大小是0,并且根本打不开。//后续发现 其实windows路径可以兼容linux路径,所以统一用linux系统路径就行

最后各种查资料,我发现网上这类问题解决的方式很少,后经询问

得出来的原因

linux与windows文件上传时,要判断他们的操作系统是linux 还是windows要不然可能会出现上传失败,或者上传的文件大小为0 打不开的 情况,而且linux的路径格式与windows的不一样。

具体思路

linux的路径:/data;  (直接/data就行,后续可以改路径)
windows的路径: c:/home/....(根据自己情况设置)

具体实现(后续我是加了这块代码)

 具体代码

 try {
//            保存文件相关名
            String original1 = file.getOriginalFilename();

            //分割后缀名判断类型
            String flex = "." + original1.split("\\.")[original1.split("\\.").length - 1];
//            String typeName = "普通附件";
            //在文件 名中加入时间戳
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss");
            String time = sdf.format(new Date());
            String newFileName = RandomUtil.randomString(20) + time;
//            String pathstr="C:\\home\\data-platform\\file";
            String pathstr=null;

            //判断系统是windows 还是linux
            String os = System.getProperty("os.name");
            if (os != null && os.toLowerCase().startsWith("windows")) {
                System.out.println(String.format("当前系统版本是:%s", os));
                pathstr= "C:/home/data-platform/file";
            } else if (os != null && os.toLowerCase().startsWith("linux")) {//Linux操作系统
                System.out.println(String.format("当前系统版本是:%s", os));
                pathstr="/data";
            } else { //其它操作系统
                System.out.println(String.format("当前系统版本是:%s", os));

            }
            File dest = new File(pathstr +"/"+ newFileName +flex);
            FileUtil.touch(dest);
            file.transferTo(dest);





希望有用。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐