node.js - 使用 mv 模块重命名包含缓冲区数据的文件时出错

标签 node.js express mv

我正在为 express js 使用 mv 模块,但我在将上传的文件保存到我选择的特定目录时遇到了问题。

当我访问我的文件数据时,我有以下信息:

fieldname : 'file',
originalname : ....,
encoding :7bit,
mimetype 'image/jpeg',
buffer : <Buffer ff d8 ff e1 ...>

当我使用 mv 执行以下操作时:

   mv( req.file.buffer , path.normalize(__dirname+'/public/uploads/'+ p._id +'.jpg'), {mkdirp: true} ,function(err){
            if(err) console.log(err);
            res.json({});
        });

我看到一条错误消息:

"Path must be a string without null bytes."

我做错了什么?我该如何解决?

最佳答案

var fs = require('fs');
var OS = require('os');
var path = require('path');

var tmpPath = path.join(OS.tmpdir(), Date.now());

//saving file to tmp dir with random name
fs.writeFile(tmpPath, req.file.buffer, function(err) {
  if (err) {
    return res.error(err);
  }
  //moving file somewhere else
  mv(tmpPath, path.normalize(__dirname+'/public/uploads/'+ p._id +'.jpg'), {mkdirp: true} ,function(err){
        if(err) console.log(err);
        res.json({});
    });
})

关于node.js - 使用 mv 模块重命名包含缓冲区数据的文件时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38855029/

相关文章:

regex - 根据文件和文件夹名称的正则表达式匹配将文件复制到文件夹中

html - 使用 express.js 在 node.js 中提供 html 的最佳实践是什么?

linux - 如何将所有文件而不是目录移动到文件夹中

linux - 包含文件路径的 Bash 变量

javascript - TypeError : res. sendFile 不是函数

javascript - Jade /Expressjs : Pass objects from server to client

javascript - 如何从状态 url 路由中删除感叹号 Mean full stack

ios - Swift POST 请求以错误的格式将正文传递给 node.js/express 应用程序

javascript - 如何设置关于路由器的快速模块?

node.js - Webpack 用于后端?