返回
前端上传与删除文件:Node.js实操指南
前端
2023-06-09 16:34:55
Node.js 文件上传和删除的奥秘
前端开发中,文件上传和删除是必备技能。从上传用户头像到管理文件系统,Node.js 提供了强大的工具来轻松应对这些任务。
文件上传
单文件上传
要上传单个文件,请使用 multer 的 single()
方法。该方法接受表单中文件字段的字段名作为参数。
const multer = require('multer');
const upload = multer({ dest: 'uploads/' });
app.post('/upload', upload.single('avatar'), (req, res) => {
console.log(req.file);
res.send('文件上传成功!');
});
多文件上传
要上传多个文件,请使用 multer 的 array()
方法。该方法接受两个参数:字段名和允许上传的文件数量。
const multer = require('multer');
const upload = multer({ dest: 'uploads/' });
app.post('/upload', upload.array('photos', 10), (req, res) => {
console.log(req.files);
res.send('文件上传成功!');
});
文件删除
要删除文件,请使用 fs
模块的 unlink()
方法。该方法接受要删除的文件路径作为参数。
const fs = require('fs');
app.delete('/file/:filename', (req, res) => {
const filename = req.params.filename;
fs.unlink(`uploads/${filename}`, (err) => {
if (err) {
res.status(500).send('文件删除失败!');
} else {
res.send('文件删除成功!');
}
});
});
常见问题解答
1. 如何限制文件大小?
使用 multer 的 limits
选项。例如:
const multer = require('multer');
const upload = multer({ dest: 'uploads/', limits: { fileSize: 1000000 } });
2. 如何限制文件类型?
使用 multer 的 fileFilter
选项。例如:
const multer = require('multer');
const upload = multer({ dest: 'uploads/', fileFilter: (req, file, cb) => {
if (file.mimetype === 'image/jpeg' || file.mimetype === 'image/png') {
cb(null, true);
} else {
cb(new Error('仅允许上传 JPEG 或 PNG 文件'), false);
}
} });
3. 如何在 S3 等云存储上上传文件?
使用 multer-s3 或 aws-sdk 等库。
4. 如何处理异步文件上传?
使用 multer 的 single()
或 array()
方法返回的 Promise。
5. 如何在上传后自定义文件名称?
使用 multer 的 filename
选项。例如:
const multer = require('multer');
const upload = multer({ dest: 'uploads/', filename: (req, file, cb) => {
cb(null, Date.now() + '-' + file.originalname);
} });