如题:问题出现在部署环境的变化。线上项目一直是在linux服务下运行,切换到Windows服务器下运行之后,文件上传就出现如下问题了。
通过排查发现是因为默认上传位置出现了变化导致的问题【此类问题都归类于找不到默认上传位置】
默认上传位置可以理解为传递到后端的文件默认保存的位置。如下:
@RequestMapping("/upload")
@ResponseBody
public ResponseParams upload(
@RequestParam("params") String params,
@RequestParam(value="img",required=false) MultipartFile img,
HttpServletRequest request,HttpServletResponse response) {
return xxx;
}
当有一个图片或文件进入controller时候,服务器会在临时位置存储它们。
【在linux系统中,Springboot项目通过java -jar命令启动服务的时候,会在系统的/tmp目录下生成一个tomcat的临时目录,上传文件时会先转成临时文件保存在这个文件夹下。】
到这里问题就很明显了,切换服务器导致了找不到该文件地址【其他情况,删除了Tmp等也会导致同样的问题】
知道了问题就很简单了,只要在application.properties里面加入默认文件上传目录即可:
注意改成你需要的目录
server.tomcat.basedir=/home/temp //linux 服务器
server.tomcat.basedir=c:\temp //win 服务器