昨天将一个JavaWeb项目部署到linux服务器上,对功能进行了一个测试,其中有一个文件上传的功能。在win环境下测试没有任何的问题,文件能够上传和下载,但是在Linux下就有问题了,文件上传时候的路径出现了差错,没有上传的指定的文件夹.
文件上传的代码在win环境下的代码为
String path = ServletActionContext.getServletContext().getRealPath("/");
String absolutePath=path + "\\uploadzc\\"+ getUploadFileName();
也就是通过相对路径上传到项目目录下的WebRoot目录下的uoloadzc文件夹,改代码在win环境下确实有效,但是在Linux下就不一样了。
是因为win环境和Linux环境下的目录分隔符不同。
java在Windows下的路径分隔符为反斜杠即‘\’。
代码中需要有转义符,例如:
String path = “D:\\tmp”;
java在Linux下的路径分隔符为正斜杠即’/’
代码中无需转义符,例如:
String path = “/data/tmp”;
所以文件路径的代码应该为:
String path = ServletActionContext.getServletContext().getRealPath("/");
String absolutePath=path + "uploadzc\"+ getUploadFileName();
注意:上面uploadzc前面没有正斜杠,具体原因我也不知道为什么,经过打印路径发现加了正斜杠会出现两个斜杠