天天看點

Node+Express檔案上傳

Express 架構核心特性:

  • 可以設定中間件來響應 HTTP 請求。
  • 定義了路由表用于執行不同的 HTTP 請求動作。
  • 可以通過向模闆傳遞參數來動态渲染 HTML 頁面。

重要子產品:

  • body-parser - node.js 中間件,用于處理 JSON, Raw, Text 和 URL 編碼的資料
  • cookie-parser - 這就是一個解析Cookie的工具。通過req.cookies可以取到傳過來的cookie,并把它們轉成對象。
  • multer - node.js 中間件,用于處理 enctype=”multipart/form-data”(設定表單的MIME編碼)的表單資料。

中間件(middleware)

  • 就是處理HTTP請求的函數,用來完成各種特定的任務,比如檢查使用者是否登入、分析資料、以及其他在需要最終将資料發送給使用者之前完成的任務。 它最大的特點就是,一個中間件處理完,可以把相應資料再傳遞給下一個中間件。
  • app.use是express“調用中間件的方法”。所謂“中間件(middleware),就是處理HTTP請求的函數,用來完成各種特定的任務,比如檢查使用者是否登入、分析資料、以及其他在需要最終将資料發送給使用者之前完成的任務。
  • app.use() 裡面使用的參數,主要是函數。但這個使用,并不是函數調用,而是使能的意思。當使用者在浏覽器送出請求的時候,這部分函數才會啟用,進行過濾、處理
var express = require ('express');
var app = express();

var fs = require("fs");
//bodyParser用于處理 JSON, Raw, Text 和 URL 編碼的資料
var bodyParser = require('body-parser');
//multer 處理enctype="multipart/form-data"(設定表單的MIME編碼)的表單資料
var multer = require('multer');
//托管靜态檔案,express.static 中間件來設定靜态檔案路徑
app.use(express.static('public'));
app.use(bodyParser.urlencoded({extend:false}));
//設定儲存路徑,為目前路徑
app.use(multer({dest:'/tmp/'}).array('image'));

app.get('/index.html',function (req,res) {
    res.sendFile( __dirname +"/"+"index.html");
});

//multer在解析完請求體後,會想Request對象中添加一個body對象和一個files對象;
//body對象中包含所送出表單中的文本字段
//files對象中包含通過表單上傳的檔案
app.post('/file_upload',function (req,res) {
    console.log(req.files[]);

    var des_file = __dirname +"/"+req.files[].originalname;
    fs.readFile(req.files[].path,function (err,data) {
        fs.writeFile(des_file,data,function (err) {
            if(err){
                console.log(err);
            }else{
                response = {
                    message:"File upload success",
                    filename:req.files[].originalname
                };
            }
            console.log(response);
            res.send(JSON.stringify(response));
        })
    });
});

app.listen(,function () {
    console.log('port 8081');
});
           

結果:

1. 啟動app.js

Node+Express檔案上傳
  1. 上傳檔案
    Node+Express檔案上傳
  2. 上傳成功
    Node+Express檔案上傳
  3. 檔案目錄:
    Node+Express檔案上傳

繼續閱讀