Node.js是一個非常流行的伺服器端運行環境,它使用JavaScript編寫,可以讓開發者使用相同的程式語言進行前後端開發。 Node.js的高效能和靈活性使得它成為了Web開發中的一個重要組成部分。在本文中,我們將學習如何使用Node.js來建立一個簡單的檔案管理系統。
為了實現這個功能,我們需要使用Node.js的基本模組fs(file system)和http來建立一個web伺服器。首先需要在命令列執行「npm init」命令產生一個package.json文件,然後透過「npm install --save express body-parser ejs multer fs」安裝所需依賴套件。
首先,我們將建立一個Node.js文件,命名為app.js。在程式碼中,我們先引入必要的模組和中間件:
const express = require('express'); const bodyParser = require('body-parser'); const multer = require('multer'); const fs = require('fs'); const ejs = require('ejs'); const app = express();
這裡我們使用了express框架、body-parser中間件和multer中間件來處理文件上傳功能,ejs模板引擎來渲染頁面。
接著,我們需要設定靜態資源路由:
app.use(express.static(__dirname + '/public'));
這裡我們將專案的靜態檔案放置在public資料夾下。
我們還需要使用body-parser中間件來處理POST請求:
app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: false }));
接下來,我們將建立一個路由來處理檔案上傳和下載的請求:
//上传文件的路由 app.post('/upload', upload.single('file'), (req, res) => { res.redirect('/'); }); //下载文件的路由 app.get('/download/:filename', (req, res) => { const { filename } = req.params; const filePath = `${__dirname}/uploads/${filename}`; res.download(filePath); });
這裡使用了multer來處理檔案上傳,使用res.download()方法來下載檔案。
最後,我們建立一個路由來渲染頁面:
app.get('/', (req, res) => { const filesPath = `${__dirname}/uploads`; const data = fs.readdirSync(filesPath); res.render('index', { files: data }); });
這裡我們讀取uploads資料夾下的所有文件,並將它們渲染到範本檔案中。
接著,我們需要建立一個index.ejs範本檔案來展示檔案列表和上傳檔案的表單:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>File Manager</title> </head> <body> <h1>Files List:</h1> <% for (let i = 0; i < files.length; i++) { %> <p><a href="/download/<%= files[i] %>"><%= files[i] %></a></p> <% } %> <hr> <h2>Upload File:</h2> <form method="post" action="/upload" enctype="multipart/form-data"> <input type="file" name="file"> <button type="submit">Upload</button> </form> </body> </html>
這裡我們使用了EJS語法來動態產生檔案列表,同時使用HTML表單來上傳文件。
最後,我們啟動伺服器:
app.listen(3000, () => { console.log('App listening on port 3000!'); });
現在我們完成了使用Node.js建立一個簡單的檔案管理系統,可以透過在瀏覽器中存取http://localhost:3000來查看效果。
完整程式碼如下:
const express = require('express'); const bodyParser = require('body-parser'); const multer = require('multer'); const fs = require('fs'); const ejs = require('ejs'); const app = express(); //设置静态资源路由 app.use(express.static(__dirname + '/public')); //设置body-parser中间件 app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: false })); //设置存储文件的位置和文件名 const storage = multer.diskStorage({ destination: (req, file, cb) => { cb(null, 'uploads'); }, filename: (req, file, cb) => { const { originalname } = file; cb(null, originalname); } }); const upload = multer({ storage }); //上传文件的路由 app.post('/upload', upload.single('file'), (req, res) => { res.redirect('/'); }); //下载文件的路由 app.get('/download/:filename', (req, res) => { const { filename } = req.params; const filePath = `${__dirname}/uploads/${filename}`; res.download(filePath); }); //渲染页面的路由 app.get('/', (req, res) => { const filesPath = `${__dirname}/uploads`; const data = fs.readdirSync(filesPath); res.render('index', { files: data }); }); //设置模板引擎和模板文件夹位置 app.set('views', __dirname + '/views'); app.set('view engine', 'ejs'); //启动服务 app.listen(3000, () => { console.log('App listening on port 3000!'); });
到此為止,我們已經完成了使用Node.js建立一個簡單的檔案管理系統的過程,透過這個例子,可以更好地理解Node. js的基本模組和中間件的使用方式。
以上是如何使用Node.js建構一個簡單的檔案管理系統的詳細內容。更多資訊請關注PHP中文網其他相關文章!