linux和windows下上传文件,linux出现文件大小为0打不开的情况

本文详细记录了解决一个在Linux和Windows系统间进行文件上传时遇到的问题。当从本地上传文件到服务器,通过jar包部署在Linux上时,文件大小显示为0并无法打开。经过排查,发现原因是路径格式不兼容。解决方案是根据操作系统的类型动态设置路径,如在Linux下使用'/data',在Windows下使用'C:/home/data-platform/file'。通过判断系统属性'os.name'来区分不同操作系统,并据此保存文件。此经验分享对于处理跨平台文件操作具有参考价值。

这几天在公司上班的时候要解决之前老员工给我丢下的一个问题,就是我通过本地上传文件时上传正常,然后打包成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);





希望有用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值