Nodejs 如何设置上传文件的权限(或设置文件权限)
Nodejs 如何设置上传文件的权限(或设置文件权限)
如何给上传文件设置权限 这是我上传文件的代码 var target_path = ‘./public/’ + settings.bookimgfolder + req.files.filepath.name; var tmp_path = req.files.filepath.path; // 移动文件 fs.rename(tmp_path, target_path, function(err) { if (err) res.send({ success: false }); // 删除临时文件夹文件, fs.unlink(tmp_path, function(err1) { if (err1) res.send({ success: false }); else res.send({ success: true }); }); }); 意思是将一个图片保存到support文件夹的子文件夹下 经测试上传后的文件无法被删除 删除代码: fs.unlink(’./support’ + img.url + unescape(img.filename) , function(e_){ if(e_) { res.send({ error: e_ }); return; } else res.send({ success: “true” }); }); 如果从别处复制一张图片删除的话,就会成功 我看了一下上传的图片的权限,发现当前用户没有‘完全控制’ 我一我猜测上传的时候没有指定权限 求破如何设置权限
在 Node.js 中,上传文件后设置文件权限可以通过使用 fs.chmod
或 fs.chmodSync
方法来实现。这两个方法可以修改文件的访问权限。以下是一个示例代码,展示了如何在文件上传后设置其权限。
首先,让我们回顾一下你现有的代码,并添加权限设置的部分:
const fs = require('fs');
const path = require('path');
var target_path = './public/' + settings.bookimgfolder + req.files.filepath.name;
var tmp_path = req.files.filepath.path;
// 移动文件
fs.rename(tmp_path, target_path, function(err) {
if (err) {
res.send({
success: false
});
return;
}
// 设置文件权限为可读、可写、可执行
fs.chmod(target_path, '0755', function(err) {
if (err) {
res.send({
success: false,
error: err.message
});
return;
}
// 删除临时文件夹文件
fs.unlink(tmp_path, function(err1) {
if (err1) {
res.send({
success: false,
error: err1.message
});
return;
} else {
res.send({
success: true
});
}
});
});
});
解释
-
引入模块:
fs
模块用于文件系统操作。path
模块用于处理和转换文件路径。
-
移动文件:
- 使用
fs.rename
将临时文件移动到目标路径。
- 使用
-
设置文件权限:
- 使用
fs.chmod
方法设置文件权限。'0755'
表示所有者具有读、写、执行权限,而组和其他用户只有读和执行权限。 - 如果设置权限时发生错误,则返回错误信息并终止处理。
- 使用
-
删除临时文件:
- 使用
fs.unlink
删除临时文件。 - 如果删除临时文件时发生错误,则返回错误信息并终止处理。
- 如果一切顺利,则返回成功信息。
- 使用
注意事项
- 确保目标路径和文件名正确无误。
- 权限字符串
'0755'
是八进制表示法,其中0
表示八进制数。你可以根据需要调整权限。
通过这种方式,你可以确保上传的文件具有适当的权限,从而避免后续操作中出现权限问题。
rename之后还要unlink,mv之后还要rm,你觉得有可能成功吗
在Node.js中,你可以使用fs.chmod()
或fs.promises.chmod()
方法来修改文件的权限。以下是如何修改上传文件权限的示例代码:
示例代码
const fs = require('fs');
const path = require('path');
var target_path = path.join('./public/', settings.bookimgfolder, req.files.filepath.name);
var tmp_path = req.files.filepath.path;
// 移动文件
fs.rename(tmp_path, target_path, function(err) {
if (err) {
res.send({ success: false });
return;
}
// 设置文件权限为可读可写
fs.chmod(target_path, 0o644, function(err) {
if (err) {
res.send({ success: false });
return;
}
// 删除临时文件夹文件
fs.unlink(tmp_path, function(err1) {
if (err1) {
res.send({ success: false });
} else {
res.send({ success: true });
}
});
});
});
解释
- 移动文件:使用
fs.rename()
方法将临时文件移动到目标路径。 - 设置文件权限:使用
fs.chmod()
方法设置文件权限。0o644
表示文件所有者具有读写权限,其他用户具有只读权限。 - 删除临时文件:使用
fs.unlink()
方法删除临时文件。
通过上述代码,你可以确保上传的文件具有正确的权限,从而避免在后续操作中遇到权限问题。