2014-10-06 97 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