node实现文件图片上传

总结一下总是用到的图片上传功能,其它文件同理

具体实现

  • 入口文件配置koa-body来支持文件上传
const path = require('path')
const Koa = require('koa')
const app = new Koa()
//  KoaBody本身为函数
app.use(KoaBody({
    multipart: true,//开启文件上传
    // 文件上传的详细信息
    //KoaBody依赖formidable包来处理上传的文件
    formidable: {
        // 配置选项option不推荐使用相对路径
        // 在option的相对路径,是相对process.cwd()路径,不是当前路径
        uploadDir: path.join(__dirname,'../upload'),//照片存放的文件夹
        keepExtensions: true,
    },
    parsedMethods:['POST','PUT','PATCH','DELETE']
}))
// koa-static的配置
app.use(KoaStatic(path.join(__dirname, '../upload/goods')))
app.use(parameter(app))
  • 接口返回文件名给调用者(前端)

KoaBody将上传后的文件信息挂载到ctx.request.files,我们返回的是ctx.request.files.key(为formdata里面的key)

 const {
            file
        } = ctx.request.files
        const fileType = ['image/jpeg', 'image/png']

        if (file) {
            if (!fileType.includes(file.type)) {
                return ctx.app.emit('error', unSupportedFileType, ctx)
            }
            ctx.body = {
                code: 0,
                message: '商品上传成功',
                result: {
                    goods_img: path.basename(file.path)
                }

            }
        } }
  • 安装插件koa-static,作用是使某个目录设置成一个静态资源文件夹,当我们去请求文件的时候就会去对应的资源文件夹找
  • 在入口文件配置静态资源路径
const KoaStatic = require('koa-static')
app.use(KoaStatic(path.join(__dirname, '../upload')))

Guess you like

Origin blog.csdn.net/weixin_43663349/article/details/121571859