Nodejsはファイルアップロード名を実装します

WBOY
リリース: 2023-05-28 13:29:41
オリジナル
768 人が閲覧しました

名前とサイズの制限

インターネットの継続的な発展に伴い、ファイルのアップロードは多くの Web サイトで必要な機能の 1 つになりました。 Node.js では、さまざまなモジュールやテクノロジーを使用してファイルのアップロードを実装できます。以下では、Express フレームワークに基づくファイル アップロード方法を紹介し、ファイル アップロードのサイズと名前の制限を実装する方法について説明します。

  1. 依存モジュールのインストール

この記事では、Express フレームワークを Web サーバーとして使用し、multer モジュールを使用してファイルのアップロードを処理します。まず、これらの依存モジュールをインストールしましょう:

npm install express multer --save
ログイン後にコピー
  1. ファイル アップロードの基本的な使用法

基本的なファイル アップロード ルーティングの例を次に示します:

const express = require('express');
const multer  = require('multer');

const app = express();
const upload = multer({ dest: 'uploads/' });

app.post('/upload', upload.single('file'), function(req, res) {
    res.send('文件上传成功!');
});

app.listen(3000, function() {
    console.log('服务器已启动,端口号:3000');
});
ログイン後にコピー

上記のコードでは、multer の upload.single メソッドを使用してファイルのアップロードを処理します。単一ファイルの name 属性は file である必要があります。アップロードが成功すると、サーバーは文字列を返します。

  1. ファイル サイズ制限

次に、ファイル サイズ制限を実装しましょう。これを行うには、multer 設定で limits 属性を指定します。例は次のとおりです。

const upload = multer({
  dest: 'uploads/',
  limits: {
    fileSize: 1024 * 1024 //限制1M
  }
});
ログイン後にコピー

上記の例では、アップロードされるファイルの最大サイズを 1M (単位はバイト) に設定します。アップロードされたファイルのサイズがこの値を超える場合、multer は自動的にエラーを返します。 req.file が存在するかどうかを判断することで、ルートのコールバック関数のエラーをチェックできます。例は次のとおりです。

app.post('/upload', upload.single('file'), function(req, res) {

    // 文件大小超出限制
    if (req.file.size > 1024 * 1024) {
        return res.status(400).send('文件大小不能超过1M');
    }

    res.send('文件上传成功!');
});
ログイン後にコピー

上記の例では、ファイル サイズが 1M を超える場合、エラー コード 400 とエラー メッセージが返されます。

  1. ファイル名の制限

アップロードされるファイル名を制限したい場合は、multer の fileFilter メソッドを使用してそれを実現できます。 fileFilter メソッドではアップロードされたファイル名を判定し、条件を満たしていればアップロードを続行しますが、そうでない場合はエラーが発生します。例は次のとおりです。

const storage = multer.diskStorage({
    destination: function(req, file, cb) {
        cb(null, './uploads')
    },
    filename: function(req, file, cb) {
        // 只允许上传后缀名为jpg, jpeg和png的文件
        if (!/.(jpg|jpeg|png)$/.test(file.originalname)) {
            return cb(new Error('只能上传jpg, jpeg和png格式的图片'));
        }

        //自定义文件名称
        let timestamp = Date.now();
        cb(null, timestamp + '.' + file.originalname.split('.').pop());
    }
});

const upload = multer({
    storage: storage,
    limits: {
        fileSize: 1024 * 1024 //限制1M
    },
    fileFilter: function(req, file, cb) {
        // 检查文件类型
        if (!file.originalname.match(/.(jpg|jpeg|png)$/)) {
            return cb(new Error('只能上传jpg, jpeg和png格式的图片'));
        }

        // 继续上传
        cb(null, true);
    }
});

app.post('/upload', upload.single('file'), function(req, res) {
    res.send('文件上传成功!');
});
ログイン後にコピー

上記の例では、ファイルをアップロードする前にファイル名を判断して変更する filename メソッドを追加しました。さらに、fileFilter メソッドを使用して、ファイル名が要件を満たしているかどうかを判断します。満たしていない場合は、エラーがスローされます。

  1. 概要

上記の例を通じて、Express モジュールと multer モジュールを使用してファイルのアップロードとサイズと名前の制限を実装する方法を学びました。読者の皆様も実際の開発に柔軟に応用していただけると思います。実稼働環境でのファイルのアップロードについては、より厳格なセキュリティ チェックと制限を実装する必要があることは注目に値します。

以上がNodejsはファイルアップロード名を実装しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!