2014-10-06 64 views
0

我试图通过网站上传文件。由于我是网络编程的新手,我没有在网络上找到完整的例子,解决了我所有的疑问。使用Express + Connect(节点)上传文件

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

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

有人可以解释它是如何工作的?或者显示一个例子?

非常感谢!

+0

这是不是一个真正的问题。相当广泛。你会想单独使用** Express **或** Connect **。 **连接**中间件将与** Express **一起使用。我建议** connect-busboy **或** connect-multiparty **。我不打算举例,因为在关联的Github页面上有很好的例子。您可以在https://github.com/senchalabs/connect?_ga=1.267884814.1434071463.1390859279#middleware – Jordonias 2014-10-06 20:16:39

+0

中找到由** Connect **和** Express **支持的中间件Express 4不再使用连接中间件:http: //scotch.io/bar-talk/expressjs-4-0-new-features-and-upgrading-from-3-0 – xShirase 2014-10-06 20:19:33

+0

正如xShirase所说,Connect在Express 4.0中不起作用。我会再次看上帝的例子,但是我没有在我描述的场景中找到它。 – 2014-10-06 20:35:23

回答

0

通过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"); 
    }); 
    }); 
}); 
+0

T.W.R,此代码是否适用于Express 4.0?这不是在这里工作 – 2014-10-06 20:32:43

+0

这是非常低效的,如果你只是在移动文件。如果您想移动文件,请使用['fs.rename()'](http://nodejs.org/api/fs.html#fs_fs_rename_oldpath_newpath_callback)。 – mscdex 2014-10-06 20:53:53

+0

这段代码将与Express 4一起工作,为您提供'app.use()'适当的主体解析中间件,然后再执行路由。如果你想'req.files',那么你可以尝试'multiparty'''强大'或'multer'模块。如果您希望在传入数据上拥有更大的灵活性,您可以查看'busboy' /'connect-busboy'。 – mscdex 2014-10-06 20:56:46