项目场景:
相信同学们在使用spring boot框架开发文件上传或者导入接口时都会用到MultipartFile这个接口处理上传的文件信息。我也不例外,在开发公司的风控系统时就有个方案导入的接口,其中我就用到了MultipartFile这个接口处理用户导入的方案文件。问题描述:
本来以为自己开发的这个方案导入接口上线后一般不会有什么问题,谁知上周三领导突然间在微信聊天中说什么xxx风控系统导入方案时失败了,麻烦我处理下。当时我二话不说,麻烦打开了xshell文件找到该系统的log文件,然后使用tail命令一查,发现还真报错了,具体报错日志如下图所示:
从图中可以看到程序抛出了org.springframework.web.multipart.MultipartException: Failed to parse multipart servlet request; nested exception is java.io.IOException: org.apache.tomcat.util.http.fileupload.FileUploadBase$IOFileUploadException: Processing of multipart/form-data request failed. /data/zs/dependency/tfstmp/xxxxxxxxxx.tmp (Permission denied)这样的异常。
原因分析:
既然都知道了报错的原因了,那么我们可以仔细分析下到底是哪里出了问题。大家可以上图中的红框内可以看到Permission denied,当时我第一眼看到这两个英文,我就觉察到可能是linux服务器上没有给/data/zs/dependency/tfstmp/这个文件夹分配写的权限,所以导致了在上传文件过程中生成的tmp(临时)文件无法写入到/data/zs/dependency/tfstmp/这个文件夹内,所以也就导致了 没有权限*这样的报错。解决方案:
既然找到原因了,那么就很好办了,在linux服务器上使用cd命令定位到/data/zs/dependency/tfstmp/这个文件夹,仔细一看这个文件夹的相关权限,发现只有读和执行的权限,并没有写的权限!所以很简单,使用chmod 777 tfstmp/命令使得所有的用户及群组都具有读,写和执行的权限,这样就彻底保证解决了导入方案文件时出现的没有权限的问题。版权声明:本文为Melo_FengZhi原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。