1. 程式人生 > 其它 >10.express上傳檔案

10.express上傳檔案

上傳檔案

  • 前端上傳檔案一般採用表單的方式,將content-type設定為multipart/form-data
  • 定義一個upload.js檔案用來處理上傳的路由
    • 此處上傳需要一箇中間件multer,使用的時候需要在安裝
      • npm i multer -S
    • 程式碼如下
    // upload.js
    const express = require('express')
    const router = express.Router()
    const fs = require('fs')
    const multer = require('multer')
    // 設定臨時檔案存放資料夾
    const upload = multer({dest: 'upload_tmp/'});
    
    router.post('/', upload.any(), function(req, res, next) {
        // 設定檔案的存放地址
        var des_file = "./upload/" + req.files[0].originalname;
        fs.readFile( req.files[0].path, function (err, data) {
            fs.writeFile(des_file, data, function (err) {
                if( err ){
                    console.log( err );
                }else{
                    response = {
                        message:'File uploaded successfully',
                        filename:req.files[0].originalname
                    };
                    res.end( JSON.stringify( response ) );
                }
            });
        });
    });
    module.exports = router
    
  • 在app.js匯入上傳路由
    // 匯入uploadRouter路由
    const uploadRouter = require('./upload')
    app.use('/upload', uploadRouter)
    
  • 使用apipost測試