创建缓冲区导致nodejs应用程序崩溃

时间:2016-01-10 10:24:04

标签: javascript node.js express amazon-s3

router.post('/image', multipartMiddleware , function(req, res) {


   var file_name = req.body.name;
   var data = req.body.data;

   var stream = fs.createReadStream(data); //app crash here


   return s3fsImpl.writeFile(file_name , stream).then(function () { 
        fs.unlink(data, function (err) {
            if (err) {
                console.error(err);
            }
        });
        res.status(200).end();
    });

});

尝试上传base64图片但应用程序会崩溃;如果我跳过该行,我将在S3中获取损坏的图像文件。我在这里使用名为s3fs的软件包https://github.com/RiptideElements/s3fs

2 个答案:

答案 0 :(得分:0)

fs.createReadStream将第一个参数作为文件路径。

例如:/user/x/file.txt

看起来你应该做像

这样的事情
var stream = fs.createReadStream(file_name);

答案 1 :(得分:0)

fs.createReadStream可以抛出多个错误,如果路径未通过,如果不存在等等。

BTW fs.createReadStream用于从您的文件系统中读取文件。我猜你试图从缓冲区创建一个流。

根据s3fs文档,没有必要这样做。您只需将数据传递给writeFile尝试

即可
s3fsImpl.writeFile(req.body.name, req.body.data);