Node.js nodejs multer文件上载,路径包含双斜杠

Node.js nodejs multer文件上载,路径包含双斜杠,node.js,fs,multer,Node.js,Fs,Multer,我正在通过nodejs和multer模块上传图像,这是我使用的代码: app.post('/upload', upload.single('file'), function(req, res, next) { var tmp_path = req.file.path, target_path = __dirname + '/public/uploads/' + req.file.originalname, src = fs.createReadStrea

我正在通过nodejs和multer模块上传图像,这是我使用的代码:

app.post('/upload', upload.single('file'), function(req, res, next) {
    var tmp_path = req.file.path,
        target_path = __dirname + '/public/uploads/' + req.file.originalname,

        src = fs.createReadStream(tmp_path),
        dest = fs.createWriteStream(target_path);

    src.pipe(dest);
    fs.unlink(tmp_path); //deleting the tmp_path

    src.on('end', function() {
        res.json({
            success: true,
            file: '/uploads/' + req.file.originalname
        });
    });

    src.on('error', function(err) {
        console.log('err', err);
        res.json({
            success: false
        });
    });
});
问题是,有时(随机发生)会触发错误回调,内容如下:


因此,看起来路径中添加了额外的斜杠,导致脚本找不到临时位置并返回错误,可能有人遇到了此问题,可以提供帮助;)

在发送成功消息后尝试运行取消链接,管道是异步的,因此可能在删除之后执行

 src.on('end', function() {
        res.json({
            success: true,
            file: '/uploads/' + req.file.originalname
        });
        fs.unlink(tmp_path)
    });

在发送成功消息后尝试运行取消链接,管道是异步的,因此可能在删除后执行

 src.on('end', function() {
        res.json({
            success: true,
            file: '/uploads/' + req.file.originalname
        });
        fs.unlink(tmp_path)
    });

您可以使用以下代码来消除此错误

try:-path.replace(“\\”,“/”)


这肯定会解决您的问题。

您可以使用以下代码来消除此错误

try:-path.replace(“\\”,“/”)


这肯定会解决您的问题。

实际字符串中没有双斜杠。您看到的是字符串文本版本,因为所显示的对象被传递到
util.inspect()
,它以这种方式格式化字符串值。以这种方式显示文字版本的一个优点是,它允许您更容易地查看控制字符(例如。\n、\t等)。您也可以按代码中的原样复制和粘贴它,它只会工作,无需修改。此外,您不应该使用
原始名称(至少按原样--如果您真的想/需要,您可以将名称散列)因为这是客户端提供的值,可能包含恶意字符以欺骗您覆盖敏感/重要文件。问题是什么?实际字符串中没有双斜杠。您看到的是字符串文本版本,因为所显示的对象被传递到
util.inspect()
,它以这种方式格式化字符串值。以这种方式显示文字版本的一个优点是,它允许您更容易地查看控制字符(例如。\n、\t等)。您也可以按代码中的原样复制和粘贴它,它只会工作,无需修改。此外,您不应该使用
原始名称(至少按原样--如果您真的想/需要,您可以将名称散列)因为这是客户端提供的值,可能包含恶意字符以欺骗您覆盖敏感/重要文件。问题是什么?