node框架Egg上传图片到阿里云oss

3 篇文章 0 订阅

因为项目需求考虑到图片储存在服务器上过多的话会对服务器带来压力,所以讲图片存在阿里云oss上,网上找了下,综合网上的示例整理了下。

最近做的项目用到了阿里云oss服务器,所以在此记录一下。

整体思路:将前端上传的流接受完整后直接传给oss的接口,不必在服务器再缓存一下,这样也减轻了服务器的压力,主要用到的模块是  ali-oss

 

//controller
'use strict';
const path = require('path');
const oss = require('ali-oss');
const BaseController = require("./base");

class GoodsController extends BaseController {
    async doAdd() {
        const { ctx, service, app } = this;
        let parts = ctx.multipart({ autoFields: true });
        let stream;

        //可以配置在config
        const client = new oss({
            accessKeyId: 'xxx',
            accessKeySecret: 'xxx',
            bucket: 'xxx',
            region: 'oss-cn-shenzhen',//替换成自己的地区,我这是深圳
        });
        
        while ((stream = await parts()) != null) {
            if (!stream.filename) {
                break;
            }
            let name = `test${path.extname(stream.filename)}`;
            client.putStream(name, stream).then(function (r1) {
                console.log('put success: %j',r1);
                return client.get('object');
            }).then(function (r2) {
                console.log('get success: %j');
            }).catch(function (err) {
                console.error('error: %j');
            });
            
        }
        ctx.body = "ok"
    }
}

module.exports = GoodsController;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值