赞
踩
Java程序中,使用Linux服务器上传图片到指定目录之后,通过Nginx或者Tomcat图片不能之间访问,需要为图片添加可读权限,图片才能访问。
添加权限代码:
try {
// 读取文件的现有权限
Set<PosixFilePermission> permissions = Files.getPosixFilePermissions(Path.of(filePath));
// 添加所需的权限(例如,给所有用户可读可写权限)
permissions.add(PosixFilePermission.OWNER_READ);
permissions.add(PosixFilePermission.OWNER_WRITE);
permissions.add(PosixFilePermission.GROUP_READ);
permissions.add(PosixFilePermission.GROUP_WRITE);
permissions.add(PosixFilePermission.OTHERS_READ);
permissions.add(PosixFilePermission.OTHERS_WRITE);
// 设置文件的新权限
Files.setPosixFilePermissions(Path.of(filePath), permissions);
System.out.println("文件权限已添加成功!");
} catch (Exception e) {
e.printStackTrace();
}
整体代码:
public String uploadFile(@RequestParam("file") MultipartFile mulFile,@RequestParam("dir") String dir) throws Exception {
log.info("进入图片上传方法========================");
String fileName = null;
try {
if (mulFile == null) {
throw new IOException("上传的图片不能为空!");
}
if (StringUtils.isEmpty(dir)) {
throw new IOException("文件夹名称不能为空!");
}
String fileLocalPath = "自定义地址";
System.out.println("服务器地址"+ fileLocalPath);
String path = fileLocalPath +"/" + dir;
File file = new File(path);
//如果文件夹不存在
if (!file.exists()) {
//创建文件夹
file.mkdir();
}
String myFileName = mulFile.getOriginalFilename();
// 如果名称不为“”,说明该文件存在,否则说明该文件不存在
if (!myFileName.trim().equals("")) {
// 重命名上传后的文件名
fileName = IdUtil.getSnowflake(0, 0).nextId() + ".jpg";
//+ fileImg.getOriginalFilename();
// 定义上传路径
String fpath = path + fileName;
File localFile = new File(fpath);
mulFile.transferTo(localFile);
//添加权限
// 读取文件的现有权限
log.info("文件添加权限地址:" + fpath);
Set<PosixFilePermission> permissions = Files.getPosixFilePermissions(Paths.get(fpath));
// 添加所需的权限(例如,给所有用户可读可写权限)
permissions.add(PosixFilePermission.OWNER_READ);
permissions.add(PosixFilePermission.OWNER_WRITE);
permissions.add(PosixFilePermission.GROUP_READ);
permissions.add(PosixFilePermission.GROUP_WRITE);
permissions.add(PosixFilePermission.OTHERS_READ);
permissions.add(PosixFilePermission.OTHERS_WRITE);
// 设置文件的新权限
Files.setPosixFilePermissions(Paths.get(fpath), permissions);
log.info("文件权限已添加成功!");
}
}catch (IOException e) {
e.printStackTrace();
log.error("上传图片失败!删除已上传成功的图片!错误信息:" + e.getMessage());
}
return fileLocalPath+"/"+dir+fileName;
}
Path.of(filePath)
报错,修改成Paths.get(fpath)
一样的效果。Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。