移动使用multer上传的文件时出错:资源繁忙或已锁定

时间:2017-06-13 10:21:05

标签: node.js express filepath multer

我有一个节点+快递应用程序接收文件并将它们上传到文件夹,我使用multer。

在目前的表格中,我的server.js有:

var multer = require('multer');
app.use(multer({ dest: './uploads/' }).single('files'));

将所有文件发送到/ uploads目录,并使用随机生成的名称来避免冲突。

一切正常,但是,我需要修改它,以便创建一个包含随机生成名称的文件夹并将文件放在里面(所以如果文件是随机命名的" asdf&# 34;,然后它应该以{{1​​}}结束。

由于移动文件的节点方式是使用fs.rename,我在上传路径中包含以下代码:

uploads/asdf/asdf

(newFile.uploadname应该是,实际上是由multer生成的名称)。

当代码执行时,我得到这个输出:

fs.rename('uploads/' + newFile.uploadname, 'uploads/' + newFile.uploadname + '/' + newFile.uploadname, function(err) {
  if (err) throw err
  console.log('Successfully renamed - AKA moved!')
})

文件已正确上载但未移动,也未创建目录。

发生了什么事?

1 个答案:

答案 0 :(得分:0)

问题在于我试图将名为'asdf'的文件移动到名为'asdf'的文件夹中...显然(在restrospect中)无法创建该文件夹,因为该名称已被将被复制的文件。首先将文件移动到临时文件夹然后创建文件夹解决了问题。