크기 및 크기 제한
인터넷의 지속적인 발전으로 인해 파일 업로드는 많은 웹사이트에서 필요한 기능 중 하나가 되었습니다. Node.js에서는 다양한 모듈과 기술을 사용하여 파일 업로드를 구현할 수 있습니다. 아래에서는 Express 프레임워크를 기반으로 한 파일 업로드 방법을 소개하고 파일 업로드에 대한 크기 및 이름 제한을 구현하는 방법에 대해 설명합니다.
이 기사에서는 Express 프레임워크를 웹 서버로 사용하고 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을 사용합니다. code> 메소드를 사용하여 파일 업로드를 처리하려면 단일 파일의 name 속성이 <code>file
이어야 합니다. 업로드가 성공한 후 서버는 문자열을 반환합니다. 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
limits
속성을 지정하면 됩니다. 예시는 다음과 같습니다. 위 예시에서는 업로드되는 파일의 최대 크기를 1M(단위는 바이트)로 설정했습니다. 업로드된 파일 크기가 이 값을 초과하면 multer는 자동으로 오류를 반환합니다. req.file이 존재하는지 확인하여 경로의 콜백 함수에 오류가 있는지 확인할 수 있습니다. 예시는 다음과 같습니다.
rrreee🎜위 예시에서 파일 크기가 1M를 초과하면 400 오류 코드와 오류 메시지가 반환됩니다. 🎜fileFilter
메소드를 사용하면 됩니다. fileFilter
메소드에서 업로드된 파일 이름을 판단할 수 있습니다. 조건이 충족되면 계속 업로드하고, 그렇지 않으면 오류가 발생합니다. 예시는 다음과 같습니다. 🎜rrreee🎜위 예시에서는 업로드 전 파일명을 판단하고 수정할 수 있도록 filename
메소드를 추가했습니다. 또한 fileFilter
메서드를 사용하여 파일 이름이 요구 사항을 충족하는지 확인합니다. 그렇지 않으면 오류가 발생합니다. 🎜🎜🎜요약🎜🎜🎜위의 예를 통해 Express 및 multer 모듈을 사용하여 파일 업로드와 크기 및 이름 제한을 구현하는 방법을 배웠습니다. 독자들이 실제 개발에 유연하게 적용할 수 있다고 생각합니다. 프로덕션 환경에서 파일 업로드에 대해 보다 엄격한 보안 검사 및 제한을 구현해야 한다는 점은 주목할 가치가 있습니다. 🎜위 내용은 Nodejs는 파일 업로드 이름을 구현합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!