【问题标题】:Error: EXDEV: cross-device link not permitted, rename nodejs错误:EXDEV:不允许跨设备链接,重命名 nodejs
【发布时间】:2017-05-23 23:02:51
【问题描述】:

我用强大的上传文件,但我得到这个错误

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) {
    });
})

当我删除 function checkFile 并更改为 form.uploadDir = path.join(__dirname, '../public/uploads'); 时,它可以完美运行。我哪里错了?请帮帮我

【问题讨论】:

  • "不允许跨设备链接" - 这超出了 Node/JavaScript 的范围,并且来自文件系统。检查用于验证它们是否符合预期并验证它们所在的分区的实际路径。

标签: javascript node.js


【解决方案1】:

谢谢。使用 'mv' 包代替文件系统 'rename' 方法来解决文件上传过程中将文件移动到另一个文件夹时发生的错误:

“错误:EXDEV:不允许跨设备链接,重命名...”

使用 cmd 安装包 'mv':

npm install mv

用法:

var mv = require('mv');

mv('source/file', 'dest/file', function(err) {
....
....
});

【讨论】:

    【解决方案2】:

    问题在于重命名方法。 使用 'mv' 包来移动你的文件

    https://www.npmjs.com/package/mv

    【讨论】:

      【解决方案3】:

      您只需添加以下代码即可解决此问题: var form = new formidable.IncomingForm(); form.uploadDir="yourDirNameHere/";

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-08-29
        • 2021-02-09
        • 2014-01-31
        • 1970-01-01
        • 2017-01-10
        • 1970-01-01
        • 2018-07-12
        相关资源
        最近更新 更多