【问题标题】:Upload Files using Express + Connect (Node)使用 Express + Connect(节点)上传文件
【发布时间】:2014-10-07 04:18:19
【问题描述】:

我正在尝试通过网站上传文件。由于我是网络编程的新手,我没有在网络中找到一个完整的例子来解决我所有的疑问。

我的情况是: Nodejs (v.0.10.25) + Express (4.9.0) 尝试使用 Connect (3.0)。

我使用 Express 命令创建了我的应用程序。所以 app.js 是默认创建的。我发现 Express 默认没有 multipart。我应该安装一个中间件来使用它。 我正在尝试安装 Connect。问题是:如何配置它?我必须为 Connect 服务器更换 Express 服务器还是可以同时存在?

有人可以解释它是如何工作的吗?或者举个例子?

非常感谢!

【问题讨论】:

  • 这不是一个真正的问题。相当广泛。您需要单独使用 ExpressConnectConnect 中间件可以很好地与 Express 一起使用。我建议connect-busboyconnect-multiparty。我不会做任何例子,因为在相关的 Github 页面上有很好的例子。您可以在github.com/senchalabs/… 找到 ConnectExpress 支持的中间件
  • Express 4 不再使用连接中间件:scotch.io/bar-talk/…
  • 正如 xShirase 所说,Connect 在 Express 4.0 中不起作用。我会再看一下上帝的例子,但我没有找到我描述的场景。
  • 虽然 Express 4 不再依赖 Connect,但您当然可以将 Connect 中间件与 Express 4 一起使用。
  • 好的 mscdex,我说我是网络编程新手。所以对你来说似乎很明显的事情,对我来说却不是。我现在正在尝试点击链接e-zest.net/blog/…,可以吗?

标签: node.js express connect


【解决方案1】:

通过http://howtonode.org/really-simple-file-uploads

<!-- client html -->
<form action="upload" method="post" enctype="multipart/form-data">
  <input type="file" name="file_upload">
</form>
// node.js server
var fs = require('fs'),
    http = require('http');
    app = (require('express'))();
app.post('upload', function(req, res){
  fs.readFile(req.files.file_upload.path, function (err, data) {
    var newPath = __dirname + "/uploads/uploadedFileName";
    fs.writeFile(newPath, data, function (err) {
      res.redirect("back");
    });
  });
});

【讨论】:

  • T.W.R,此代码适用于 Express 4.0 吗?它在这里不起作用
  • 如果您所做的只是移动文件,这是非常低效的。如果要移动文件,请使用 fs.rename()
  • 此代码将与 Express 4 一起使用,前提是您 app.use() 在您的路由之前有一个适当的正文解析中间件。如果你想要req.files,那么你可以试试multiparty/formidablemulter 模块。如果您希望对传入数据有更大的灵活性,您可以查看busboy/connect-busboy
  • 它不起作用,因为用于 req.files 的中间件已从核心 Express 4.X 构建中取出,现在您必须自己添加它。
猜你喜欢
  • 1970-01-01
  • 2015-09-10
  • 1970-01-01
  • 2019-10-14
  • 2013-08-26
  • 2014-09-11
  • 2017-08-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多