名前とサイズの制限
インターネットの継続的な発展に伴い、ファイルのアップロードは多くの Web サイトで必要な機能の 1 つになりました。 Node.js では、さまざまなモジュールやテクノロジーを使用してファイルのアップロードを実装できます。以下では、Express フレームワークに基づくファイル アップロード方法を紹介し、ファイル アップロードのサイズと名前の制限を実装する方法について説明します。
この記事では、Express フレームワークを Web サーバーとして使用し、multer モジュールを使用してファイルのアップロードを処理します。まず、これらの依存モジュールをインストールしましょう:
npm install express multer --save
基本的なファイル アップロード ルーティングの例を次に示します:
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
である必要があります。アップロードが成功すると、サーバーは文字列を返します。
次に、ファイル サイズ制限を実装しましょう。これを行うには、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 とエラー メッセージが返されます。
アップロードされるファイル名を制限したい場合は、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
メソッドを使用して、ファイル名が要件を満たしているかどうかを判断します。満たしていない場合は、エラーがスローされます。
上記の例を通じて、Express モジュールと multer モジュールを使用してファイルのアップロードとサイズと名前の制限を実装する方法を学びました。読者の皆様も実際の開発に柔軟に応用していただけると思います。実稼働環境でのファイルのアップロードについては、より厳格なセキュリティ チェックと制限を実装する必要があることは注目に値します。
以上がNodejsはファイルアップロード名を実装しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。