名前とサイズの制限
インターネットの継続的な発展に伴い、ファイルのアップロードは多くの 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 サイトの他の関連記事を参照してください。