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


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

193

被折叠的 条评论
为什么被折叠?



