【问题标题】:how to rename a incoming file in node js?如何重命名节点js中的传入文件?
【发布时间】:2020-09-25 22:33:40
【问题描述】:

我想重命名一个从客户端传入的文件。我正在使用 node js、express、path、fs 来执行操作。

这是我要重命名传入文件的节点 js 函数:

app.post('/results/upload',(request,response)=>{
    const resultFile = request.files.file;
    const fileInfo="result"
    fs.rename(`${resultFile.name}`, `${fileInfo}`, (err) => {
        if (err) throw err;
        console.log('Rename complete!');
      });

所以我收到错误,因为没有这样的文件或目录。这是因为重命名部分,所以请告诉我如何重命名节点js中的传入文件

这是resultFile的日志文件:

`{
  name: 'Modern React with Redux.pdf',
  data: <Buffer 25 50 44 46 2d 31 2e 32 0a 25 20 63 72 65 61 74 65 64 20 62 79 20 50 49 4c 20 50 44 46 20 64 72 69 76 65 72 20 30 2e 34 0a 31 20 30 20 6f 62 6a 
0a 3c ... 1158630 more bytes>,
  size: 1158680,
  encoding: '7bit',
  tempFilePath: '',
  truncated: false,
  mimetype: 'application/pdf',
  md5: '501b04f153114b7342236a2a185a7ff7',
  mv: [Function: mv]
}`

【问题讨论】:

  • 您是否尝试指定要重命名的resultFile 的完整路径?看起来现在您只指定名称,它可能不在默认搜索目录中。您的 resultDirectory 变量也未使用。也许您也想将其包含在目标路径中。
  • resultFile 是我从客户端得到的文件,它的路径是什么?
  • 我的其他操作的结果目录
  • resultFile 没有path 属性吗?
  • 请在您的问题中提供console.log(resultFile) 的输出;

标签: javascript node.js express fs


【解决方案1】:

看起来你正在使用:https://www.npmjs.com/package/express-fileupload

您可以在输出中看到mv 函数在您的输出中可用。使用该函数移动文件:

resultFile.mv(newFilePath);

而不是使用 fs.rename 函数。

【讨论】:

  • 将文件移动到哪里?无论如何,我对该文件进行了后续操作,以将其作为单独的文件夹存储在我的节点 js 服务器中。所以我只是希望它在该操作之前重命名文件以便于访问。但如果我现在移动文件,它会占用更多空间
  • 你可以把它放在你想要的任何地方。这完全取决于你。在这种情况下,“移动”和“重命名”是同一回事。如果要将其放在另一个文件夹中,请在 mv 函数的参数中指定。您还可以提供回调或使用返回的 Promise 在将其放置在该位置后执行工作。
【解决方案2】:

你可以做fs.rename(),例如:

fs.rename('mynewfile1.txt', 'myrenamedfile.txt', function (err) {
  if (err) throw err;
  console.log('File Renamed!');
});

【讨论】:

  • 是的,我确实参考了文档,但是传入文件的路径是什么,它说没有这样的文件或目录
猜你喜欢
  • 2019-08-04
  • 2018-07-20
  • 2019-10-22
  • 2021-12-19
  • 2011-08-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多