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