nodeJS根據檔案字尾名讀取檔案並返回符合檔案總數

大男孩-Chen發表於2020-12-30

第一步安裝express啟動服務

const express = require('express')

const app = new express()

app.listen(5000, () => {
	console.log(running...)
})

第二步配置路由

appJS檔案中內容

const express = require('express')
const router = require('./router/index') // 路由模組

const app = new express()
app.use(router)
app.listen(5000, () => {
	console.log(running...)
})

router路由模組內容

const express = require('express')
const fs = require('fs') // 檔案處理模組
const path = require('path') // 路徑處理模組

const router = new express.Router()

// 根據檔名返回檔案內容
router.get('/', (req, res) => {
	
})
// 返回所有.txt檔案數目和名稱
router.get('/filse', (req, res) => {

})

實現路由功能

第一步實現根據檔名稱返回檔案內容

router.get('/', (req, res) => {
  let fileName = req.query.name
  fileName = fileName || 'demo.txt'

  // 獲取要讀取檔案的路徑
  let filePath = path.resolve(__dirname,  `../data/${fileName}`)

  // 開始讀取檔案
  fs.readFile(filePath, function (err, data) {
    if(err) return console.log(err)
    res.send(JSON.stringify(data.toString()))
  })
})

第二步返回所有.txt檔案數目和名稱
在util資料夾建立工具類,實現根據檔案字尾名過濾檔案方法

const fs = require('fs')
const path = require('path')
/**
 * 
 * @param {要讀取的目錄路徑} dir 
 */
module.exports = function(dir) {
  let files = []
  var list = fs.readdirSync(dir)
  list.forEach(function(file) {
    if(path.extname(file) === '.txt') {
      files.push(file)
    }
  })
  let obj = {
    num: files.length,
    filesName: files
  }
  return obj
}

第二步實現路由功能

const readDir= require('../utils/utils') // 匯入讀取檔案目錄的方法

router.get('/files', (req, res) => {
  let filePath = path.resolve(__dirname,  '../data')
  res.send(readDir(filePath))
})

路由全部程式碼

const express = require('express')
const fs = require('fs')
const path = require('path')
const router = express.Router()
const readDir = require('../utils/utils')

// 檔案讀取路由
router.get('/', (req, res) => {
  let fileName = req.query.name
  fileName = fileName || 'demo.csv'

  // 獲取要讀取檔案的路徑
  let filePath = path.resolve(__dirname,  `../data/${fileName}`)

  // 開始讀取檔案
  fs.readFile(filePath, function (err, data) {
    if(err) return console.log(err)
    res.send(JSON.stringify(data.toString()))
  })
})

// 獲取檔案個數及檔名稱路由
router.get('/files', (req, res) => {
  let filePath = path.resolve(__dirname,  '../data')
  res.send(readDir(filePath))
})

// 配置404
router.all('*', (req, res) => {
  fs.readFile(path.resolve(__dirname, '../public/404.html'), (err, data) => {
    if(err) throw err
    res.send(data.toString())
  })
})

module.exports =  router

相關文章