nodejs 下载视频 通过分片上传到ali-oss

const OSS = require('ali-oss');

const client = new OSS({
    'region': '<Your region>',
    'accessKeyId': '<Your AccessKeyId>',
    'accessKeySecret': '<Your AccessKeySecret>',
    'bucket': 'bobo-wjc',
});
const request = require('request');
const path = require('path');
const fs = require('fs');

(async () => {
    // 创建一个可写流
    let name = `${new Date().getTime()}.mp4`;
    let file = path.resolve(__dirname, `./${name}`);
    try {
        // 需要下载的视频路径
        let url = 'https://s3.meituan.net/v1/mss_44977afbb0cb409db8736441cf62a2d1/video/e00f83214e1ebb4df2226cbdf2ea59d3.mp4';
        let writeStream = fs.createWriteStream(file); // 创建可写流

        let ok = 1;
        await new Promise((resolve, reject) => {
            request(url)
                .on('response', function(response) {
                    if (response.statusCode !== 200) {
                        ok = -1;
                        return resolve(0);
                    }
                })
                .on('end', function() {
                })
                .on('error', function(err) {
                    ok = -1;
                    return resolve(0);
                })
                .on('data', chunk => {
                })
                .on('finish', function() {
                    writeStream.end();
                })
                .pipe(writeStream);
            writeStream.on('finish', function() {
                if (ok === -1) {
                    fs.unlinkSync(file);
                }
                return resolve(1);
            });
        });

        console.log('下载成功======>', file);
        // 分片上传
        // /test/test.png 上传到云上的路径
        let result = await client.multipartUpload('/test/test.png', file, {
            'progress': async function(p) {
                console.log(p);
            },
            'meta': {
                'year': 2017,
                'people': 'test',
            },
        });


        console.log(result);
        // 使用对应的bucket 的域名拼接 result.name
        // 删除本地文件
        // 删除文件
        fs.unlinkSync(file);
    } catch (error) {
        fs.unlinkSync(file);
        console.log('error============>', error);
        return '';
    }
})();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值