在 Web 开发中,文件上传是一项非常常见的任务。在 Express.js 中,可以使用 multer
中间件来实现文件上传。但是,如果要上传二进制文件(如图片、视频等),需要进行一些额外的处理。
本文将介绍如何使用 Express.js 和 multer
中间件上传二进制文件,并对上传的文件进行处理和保存。
1. 安装和配置 multer
首先,需要安装 multer
中间件。可以使用以下命令进行安装:
npm install multer
然后,在 Express.js 应用程序中引入 multer
中间件,并配置上传的目录和文件名。以下是一个示例配置:
// javascriptcn.com 代码示例 const multer = require('multer'); const storage = multer.diskStorage({ destination: function (req, file, cb) { cb(null, 'uploads/') }, filename: function (req, file, cb) { cb(null, file.originalname) } }); const upload = multer({ storage: storage });
在上面的示例中,destination
参数指定上传的目录,filename
参数指定上传的文件名。可以根据实际需求修改这些参数。
2. 上传二进制文件
使用 multer
中间件处理文件上传非常简单。只需要在路由处理函数中使用 upload.single
函数即可。
以下是一个上传图片的示例代码:
// javascriptcn.com 代码示例 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.originalname) } }); const upload = multer({ storage: storage }); app.post('/upload', upload.single('image'), (req, res) => { res.send('File uploaded successfully'); }); app.listen(3000, () => { console.log('Server started on port 3000'); });
在上面的示例中,使用了 upload.single
函数来处理文件上传。image
参数指定了上传的文件字段名。在路由处理函数中,可以使用 req.file
对象来访问上传的文件信息。
3. 处理二进制文件
上传二进制文件后,通常需要对文件进行处理和保存。以下是一个示例代码,将上传的图片保存到本地,并返回图片的 URL:
// javascriptcn.com 代码示例 app.post('/upload', upload.single('image'), (req, res) => { const file = req.file; const imageUrl = `http://localhost:3000/${file.filename}`; // Save file to disk fs.writeFile(`uploads/${file.filename}`, file.buffer, (err) => { if (err) { console.error(err); res.status(500).send('Failed to save file'); } else { res.send(imageUrl); } }); });
在上面的示例中,使用了 fs.writeFile
函数将上传的图片保存到本地。然后,返回图片的 URL。
4. 总结
本文介绍了如何使用 Express.js 和 multer
中间件上传二进制文件,并对上传的文件进行处理和保存。在实际开发中,可以根据需求进行修改和扩展。
完整示例代码:https://github.com/JasonLai256/express-binary-upload-example
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6562e4d1d2f5e1655dca6288