返回
通过egg.js快速搭建文件上传后端
后端
2023-09-19 02:41:33
前言
在现代网络应用中,文件上传是不可或缺的功能之一。它允许用户将本地文件上传到服务器,以便进行存储、处理或共享。在egg.js框架中,文件上传的实现非常简单,开发者只需通过简单的配置和几行代码即可完成。
一、环境准备
在开始之前,我们需要先确保已安装并配置好egg.js框架。如果尚未安装,可通过以下命令进行安装:
npm install egg -g
安装完成后,即可通过以下命令创建新的egg.js项目:
egg init my-app
其中my-app
为项目的名称,可根据实际情况进行修改。
创建项目后,我们还需要安装egg-multipart
插件,以便支持文件上传功能。可以通过以下命令进行安装:
npm install egg-multipart --save
二、配置
在完成环境准备后,我们需要在项目中进行一些配置。首先,我们需要在config/config.default.js
文件中配置文件上传的存储路径:
exports.multipart = {
fileSize: '50mb',
mode: 'file',
fileLimit: 10,
whitelist: ['.jpg', '.jpeg', '.png', '.gif'],
dir: '/var/www/myapp/uploads',
cleanSchedule: {
// 干净的垃圾桶
cron: '0 30 3 * * *',
interval: 24 * 60 * 60 * 1000 // 每天
}
};
其中:
fileSize
:允许上传的文件最大尺寸,默认值为50mb
。mode
:文件存储方式,有file
和stream
两种模式,默认值为file
。fileLimit
:允许同时上传的文件数量,默认值为10
。whitelist
:允许上传的文件类型,默认值为['.jpg', '.jpeg', '.png', '.gif']
。dir
:文件上传的存储路径,默认值为/tmp/egg-multipart-uploads
。cleanSchedule
:定时清理上传的文件,默认情况下每天清理一次。
如果需要使用阿里云OSS或七牛云存储等第三方存储服务,则需要在config/plugin.js
文件中进行配置:
exports.oss = {
enable: true,
package: 'egg-oss',
};
其中:
enable
:是否启用OSS存储,默认值为false
。package
:OSS存储的插件包名,默认值为egg-oss
。
三、代码实现
在完成配置后,我们就可以开始编写文件上传的代码了。首先,我们需要在路由文件中添加如下代码:
exports.router.post('/upload', async (ctx) => {
const files = ctx.req.files;
if (!files) {
ctx.body = {
code: 400,
message: 'No file uploaded',
};
return;
}
// 处理文件上传
const file = files[0];
const result = await ctx.oss.put(file.fieldname, file.filepath);
// 返回上传结果
ctx.body = {
code: 200,
message: 'File uploaded successfully',
data: {
url: result.url,
},
};
});
其中:
ctx.req.files
:包含了所有上传的文件信息。files[0]
:获取第一个上传的文件信息。ctx.oss.put()
:将文件上传到OSS存储。result.url
:上传后的文件URL。
四、测试
完成代码编写后,我们可以通过以下命令启动项目:
npm start
然后,就可以使用Postman或其他HTTP客户端工具测试文件上传功能了。
五、总结
通过以上步骤,我们就可以快速搭建一个文件上传的后端程序。egg.js框架提供了简单易用的文件上传功能,可以帮助开发者快速完成文件上传需求。