在Ubuntu中使用Node.js处理文件上传,你可以使用流行的中间件multer
首先确保你已经安装了Node.js和npm。如果没有,请访问Node.js官网下载并安装。
创建一个新的项目文件夹,并在该文件夹中打开终端。
使用以下命令初始化项目并创建一个package.json文件:
npm init -y
安装express和multer:
npm install express multer
在项目文件夹中创建一个名为app.js的文件,并添加以下代码:
const express = require('express');
const multer = require('multer');
const app = express();
// 设置存储引擎
const storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, 'uploads/');
},
filename: function (req, file, cb) {
cb(null, file.fieldname + '-' + Date.now() + '-' + file.originalname);
}
});
// 初始化上传
const upload = multer({
storage: storage,
limits: { fileSize: 10 * 1024 * 1024 }, // 限制文件大小为10MB
fileFilter: function (req, file, cb) {
checkFileType(file, cb);
}
}).single('file'); // 'file'是表单中的文件字段名称
// 检查文件类型
function checkFileType(file, cb) {
// 允许的文件扩展名
const filetypes = /jpeg|jpg|png|gif/;
// 检查扩展名
const extname = filetypes.test(path.extname(file.originalname).toLowerCase());
// 检查MIME类型
const mimetype = filetypes.test(file.mimetype);
if (mimetype && extname) {
return cb(null, true);
} else {
cb('Error: Images Only!');
}
}
// 路由
app.post('/upload', (req, res) => {
upload(req, res, (err) => {
if (err) {
res.status(400).send({ message: err });
} else {
if (req.file == undefined) {
res.status(400).send({ message: 'No File Selected!' });
} else {
res.send({
message: 'File Uploaded!',
file: `uploads/${req.file.filename}`
});
}
}
});
});
// 启动服务器
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => console.log(`Server started on port ${PORT}`));
在项目文件夹中创建一个名为uploads的文件夹,用于存储上传的文件。
运行你的Node.js应用程序:
node app.js
现在,你的Node.js应用程序已经准备好处理文件上传了。你可以使用Postman或其他API测试工具向http://localhost:3000/upload发送一个包含文件的POST请求来测试文件上传功能。确保在表单中设置Content-Type为multipart/form-data,并将文件字段名称设置为file。