Javascript 错误:EXDEV:不允许跨设备链接,重命名节点
我上传了一个文件,但我得到了这个错误Javascript 错误:EXDEV:不允许跨设备链接,重命名节点,javascript,node.js,Javascript,Node.js,我上传了一个文件,但我得到了这个错误 Error: EXDEV: cross-device link not permitted, rename 这是我的密码: router.post('/file',function(req,res) { var form = new formidable.IncomingForm(); function checkFile(filename) { if(filename.match(/\.(jpg|jpeg|png)$/i)){
Error: EXDEV: cross-device link not permitted, rename
这是我的密码:
router.post('/file',function(req,res) {
var form = new formidable.IncomingForm();
function checkFile(filename) {
if(filename.match(/\.(jpg|jpeg|png)$/i)){
return form.uploadDir = path.join(__dirname, '../public/uploads/img');
}else{
return form.uploadDir = path.join(__dirname, '../public/uploads');
}
}
form.multiples = true;
form.maxFieldsSize = 2 * 300 * 300;
// every time a file has been uploaded successfully,
// rename it to it's orignal name
form.on('file', function(field, file) {
var fileName = file.name;
var d = new Date();
var t = d.getTime();
var newName = md5(file.name) + t;
fs.rename(file.path,path.join(checkFile(fileName),newName),function(err) {
if(err)
console.log(err);
console.log('Success')
});
});
// log any errors that occur
form.on('error', function(err) {
console.log('An error has occured: \n' + err);
});
// parse the incoming request containing the form data
form.parse(req, function(err, fields, files) {
});
})
当我删除
函数检查文件
并更改为form.uploadDir=path.join(uu dirname,../public/uploads')代码>,它工作完美。我的错在哪里?请帮助我问题在于重命名方法。
使用“mv”包移动文件
谢谢。使用“mv”包而不是文件系统“rename”方法来解决在文件上载期间将文件移动到另一个文件夹时发生的错误:
错误:EXDEV:不允许跨设备链接,重命名
使用cmd安装包“mv”:
npm install mv
用法:
var mv = require('mv');
mv('source/file', 'dest/file', function(err) {
....
....
});
您只需添加以下代码即可解决此问题:
var form=new.IncomingForm();
form.uploadDir=“yourDirNameHere/” “不允许跨设备链接”-这超出了Node/JavaScript的范围,并且来自文件系统。检查用于验证它们是否符合预期的实际路径,并验证它们位于哪个分区上。