ホームページ  >  記事  >  ウェブフロントエンド  >  Node.jsを使用してシンプルなファイル管理システムを構築する方法

Node.jsを使用してシンプルなファイル管理システムを構築する方法

王林
王林オリジナル
2023-11-08 18:19:491523ブラウズ

Node.jsを使用してシンプルなファイル管理システムを構築する方法

Node.js は非常に人気のあるサーバーサイド ランタイム環境であり、JavaScript で記述されており、開発者はフロントエンドとバックエンドの開発に同じプログラミング言語を使用できます。 Node.js の効率性と柔軟性により、Node.js は Web 開発の重要な部分となっています。この記事では、Node.js を使用して単純なファイル管理システムを構築する方法を学びます。

この機能を実現するには、Node.js の基本モジュール fs (ファイル システム) と http を使用して Web サーバーを作成する必要があります。まず、コマンド ラインで「npm init」コマンドを実行して package.json ファイルを生成し、次に「npm install --saveexpress body-parser ejs multer fs」を通じて必要な依存関係パッケージをインストールする必要があります。

まず、app.js という名前の Node.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();

ここでは、エクスプレス フレームワーク、ボディパーサー ミドルウェア、および multer ミドルウェアを使用してファイル アップロード機能を処理し、ejs テンプレート エンジンを使用してページをレンダリングします。 。

次に、静的リソース ルーティングを設定する必要があります。

app.use(express.static(__dirname + '/public'));

ここでは、プロジェクトの静的ファイルをパブリック フォルダーに配置します。

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 });
});

ここでは、アップロード フォルダー内のすべてのファイルを読み取り、テンプレート ファイルにレンダリングします。

次に、ファイル リストとファイルをアップロードするためのフォームを表示するために、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 についてより深く理解できるようになります。 jsの基本モジュールとミドルウェアの使い方。

以上がNode.jsを使用してシンプルなファイル管理システムを構築する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。