Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 错误:EXDEV:不允许跨设备链接,重命名节点_Javascript_Node.js - Fatal编程技术网

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的范围,并且来自文件系统。检查用于验证它们是否符合预期的实际路径,并验证它们位于哪个分区上。