【问题标题】:node express upload file with mean stack具有平均堆栈的节点快速上传文件
【发布时间】:2014-02-06 15:50:08
【问题描述】:

我应该实现一个上传表单 我想过使用 bodyparser 但我读了 http://andrewkelley.me/post/do-not-use-bodyparser-with-express-js.html

那么使用平均堆栈快速上传文件的方法是什么? 可能是强大的还是其他模块?

【问题讨论】:

    标签: node.js express mean-stack


    【解决方案1】:

    该警告专门针对将 express.bodyparser 中间件添加到整个堆栈,因为它将 express.multipart 添加到所有 POST 端点,因此所有 POST 端点都会自动接受文件上传。默认情况下,框架会自动将所有上传的文件保存到/tmp,因此除非您清理它们,否则攻击者可能会用上传的文件淹没您的磁盘。

    如果你想避免使用额外的模块,你应该做的是在你想允许文件上传的端点上实现 express.multipart。这就是我要说的:

    var express = require("express")
      , app = express();
    
    // middleware (no bodyparser here)
    app.use(express.json());
    app.use(express.urlencoded());
    
    // average GET endpoint
    app.get("/", function(req,res) {
      res.send('ok');
    });
    
    // average POST endpont
    app.post("/login", function(req,res) {
      res.send('ok');
    });
    
    // File upload POST endpoint
    app.post('/upload', express.multipart, function(req, res) {
      //File upload logic here
      //Make sure to delete or move the file accordingly here, otherwise files will pile up in `/tmp`
    });
    

    请注意文件上传端点中包含 express.multipart。此端点现在将处理分段文件上传,假设您正确处理它们,它们不会构成威胁。

    现在,在告诉您所有这些之后,由于这个确切的问题,Connect 正在弃用 multipart,但似乎没有任何计划添加基于流的文件上传替换。相反,他们建议您使用node-multiparty,它使用流来避免将文件放在磁盘上。但是,我似乎没有找到任何好的参考资料来使用多方作为中间件而不保存文件,因此您必须联系多方的作者或仔细查看使用 Express 实现它的 API .

    【讨论】:

    【解决方案2】:

    我创建了一个使用 Express & Multer 的示例 - 非常简单,避免了所有 Connect 警告

    https://github.com/jonjenkins/express-upload

    【讨论】:

      猜你喜欢
      • 2014-05-21
      • 2015-04-21
      • 2015-12-23
      • 2015-10-31
      • 2019-02-05
      • 1970-01-01
      • 2020-09-09
      • 2020-03-30
      • 2017-05-01
      相关资源
      最近更新 更多