直接从请求中写入文件

时间:2014-04-08 07:40:25

标签: node.js

我有以下逻辑:

 //Defense mechanism code is before the fs operations...

fs.readFile(req.files.image.path, function (err, data) { 
        if (err) {

        } else {
            fs.writeFile(pathLocation, data, function (err) {
                if (err) {                      
                    return res.send(err, 500);
                }

据我所知,我有fs.read然后fs.write ...问题是我能避免先fs.read吗?换句话说直接从流中读取(req.files.image。路径)...

我正在尝试尽可能优化代码。

1 个答案:

答案 0 :(得分:1)

req.files.image不是一个流。它已经被缓冲并通过中间件(可能是连接bodyParser)写入磁盘。您可以通过fs.rename将其重命名为最终的FS位置。 <{1}}是不必要的。

您可以通过将其重命名为磁盘来避免写入重命名。删除readFile/writeFile中间件并直接在路由处理程序中执行:bodyParser

注意,既然你提到它是一张进入S3的图像,你实际上可以直接从浏览器直接流式传输到app服务器而不需要访问文件系统,直到S3。这在技术上是可行的,但它很脆弱,因此大多数生产部署都使用应用服务器上的临时文件来提高可靠性。

如果您愿意,也可以上传straight from the browser to S3