文章长了点,着急解决问题的朋友可以直接看最后(三)。
这两天线上的项目的下载文件这一块出问题了,本地调试了一下,发现文件能正常下载,说明不是代码的问题。
一、查看报错日志
看了一下服务器对应的报错日志,报如下错:
java.nio.file.AccessDeniedException: /opt/jeecg-boot/upload
原因:
网上搜索了一下,报这个异常是因为新挂载的硬盘目录没有写入权限,之前服务器的硬盘不够用了,这个硬盘路径是后面挂载上去的。
二、给文件权限
到服务器上的“/opt/jeecg-boot/”目录使用命令:ll ,查看一下“upload”目录的权限:
drwxr-xr-x 9 root root 176128 Jul 20 17:42 upload
1、文件信息解释
以【空格】划分,共显示了七列信息,从左至右依次为:权限、文件数、归属用户、归属群组、文件大小、创建日期、文件名称
(1)、权限
第一列,第一位表示文件类型,我这里的第一位是【d】
【d】:文件夹
【-】:普通文件
【l】:链接
【b】:块设备文件
【p】:管道文件
【c】:字符设备文件
【s】:套接口文件
【rwx 】:第 2-4 位表示这个文件的属主拥有的权限,这里的所有者是第三列的信息,也就是root。r 是读、w 是写、x 是执行 。
【r-x】:第 5-7 位表示和这个文件属主所在同一个组的用户所具有的权限 ,这里同一个组是第四列的信息,也是root。
【r-x 】:第 8-10 位表示其他用户所具有的权限。
(2)、硬链接数
第二列
对文件:一般是1,表示它本身。只有通过 “cd 文件的绝对路径” 这条指令来定位该文件。
对目录:起码是2,对于新建的文件夹,可以通过“cd 目录的绝对路径”或在目录中通过“cd …”进入目录。
关于硬链接详细的可以看这位大哥的博客,点击跳转。
(3)、文件所有者
第三列,这里是root。
(4)、文件所有组
第四列,也是root。
(5)、文件大小
第五列,这里是176128。
(6)、文件最后一次被修改日期
第六列,这里是Jul 20 17:42。
(7)、文件名称
第七列,也是最后一列,这里是upload。
关于文件信息的介绍可以看这一篇博客,点击跳转。
2、给目标文件夹权限
命令:
chmod 777 /opt/jeecg-boot/
解释:
读 r:4
写 w:2
执行 x:1
所以数字7:7=4+2+1=r+w+x,就是具有读、写、执行权限;6=4+2=r+w就是具有读、写权限,以此类推。下次修改权限改变对应的数字就可以了。
这里777是让所有者、同组其他用户、不同组用户都具有读、写、执行权限。
给了文件夹权限之后,还要重启服务器,不然命令是不生效的,我是直接用这个命令重启服务器,命令如下:
reboot
重启之后再次查看目标目录
drwxrwxrwx 9 root root 176128 Jul 20 17:42 upload
可以看到文件夹权限改过来了,重启之后那个错应该也可以解决了。
三、读写在文件子目录进行,给了父文件目录权限依旧报错
如果读写操作发生在目标目录的子目录,那么使用上面那个命令依旧会报那个错,说明子目录没有对应的权限,打开“upload”目录查看子目录信息:
drwxr-xr-x 6 root root 176128 Jul 16 11:23 img
可以看到子目录依旧只有写和执行的权限,这时需要用这个命令:
chmod 777 -R /opt/jeecg-boot/
解释:
-R 表示包含设置所有子目录,整个命令就是给“/opt/jeecg-boot/”目录以及子目录读写权限。
重启服务器,再次查看“img”目录
drwxrwxrwx 6 root root 176128 Jul 16 11:23 img文章来源:https://www.toymoban.com/news/detail-448197.html
这下问题应该就解决了。文章来源地址https://www.toymoban.com/news/detail-448197.html
到了这里,关于解决服务器报错java.nio.file.AccessDeniedException: /opt/jeecg-boot/upload的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!