QQ登录

只需一步,快速开始

NodeJS:保存文件流到阿里云的OSS上

依梦瑶 发表于 2019-5-23 17:42:45 | 显示全部楼层 |阅读模式

近段时间忙着做项目,中间也遇到了一些新的需求,但忙着赶没有时间更新。这次的更新实践过程是将一张在线的图片转存到OSS上,并返回一个上传 OSS 后返回的 OSS 的 URL。因为有时候两家公司是敌对的(比如阿里与腾讯)要想使用对方的在线图片会受影响,这种情况就用到转存了。

主要的依赖:

  1. import * as request from 'request';
  2. import * as OSS from 'ali-oss';
  3. import * as fs from  'fs';
复制代码

OSS 服务的配置

  1. var client = new OSS({
  2.     region: '',
  3.     accessKeyId: '',
  4.     accessKeySecret: '',
  5.     bucket: '',
  6.     endPoint: 'oss-cn-hangzhou.aliyuncs.com'
  7. });
  8. var ali_oss = {
  9.     bucket: '',
  10.     endPoint: 'oss-cn-hangzhou.aliyuncs.com'
  11. };
复制代码

主要的处理过程

  1. async function PutOssStream(url: string) {
  2.     try {
  3.         // 要创建的文件名
  4.         var filename = Date.now() + ".jpg";
  5.         // 本地缓存的文件名
  6.         var localFile = filename;
  7.         // 创建写入缓存文件流
  8.         var stream = fs.createWriteStream(localFile);
  9.         stream.on('finish', async ()=>{
  10.             // 完成本地缓存流的写入,处理上传到OSS
  11.             var key = "file/" + localFile;
  12.             client.useBucket(ali_oss.bucket);
  13.             // 创建读取缓存的文件流
  14.             let stream = fs.createReadStream(localFile);
  15.             let result = await client.putStream(key, stream);
  16.             console.log(result);
  17.             var imageSrc = result.name;
  18.             // 完成上传后删除缓存文件
  19.             fs.unlinkSync("./" + localFile);
  20.             var resultUrl = result.res.requestUrls[0];
  21.             console.log(resultUrl);
  22.         });
  23.         // 流管道
  24.         request(url).pipe(stream);
  25.     } catch (e) {
  26.         lonsole.error(e);
  27.     }
  28. }
复制代码

最后就是模拟请求完成最后的测试工作

  1. var url = 'https://www.baidu.com/img/baidu_jgylogo3.gif';
  2. var a = PutOssStream(url);
复制代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

精华推荐
  • 探究!做设计之前的“构思”

    探究!做设计之前的“构思”

  • 汉字之美!中文字体设计原则

    汉字之美!中文字体设计原则

  • 一支互联网雪糕的诞生

    一支互联网雪糕的诞生

  • 设计灵感来自何处?

    设计灵感来自何处?

  • 自行车停靠架和旧自行车变废为宝家居创意作品大全

    自行车停靠架和旧自行车变废为宝家居创意作

  • 造车生死局:要么转型,要么死

    造车生死局:要么转型,要么死

  • 从欠8千万到年赚8亿

    从欠8千万到年赚8亿

  • 一座非典型五线小城的日常

    一座非典型五线小城的日常

QQ客服热线
QQ:1090281100 周一至周日:09:00 - 21:00
WeChat:duzhe1069
Email:kaixin1069@vip.qq.com

优创意logo

勿要吝啬你无形资产,请为创新续源,知识、点子、灵感、经验、需求等均是创新源泉,你不经意的一句话将是另一个人的灵感。明天的明天,还有明天,我们应该把握今天,每一个今天,都有一个新的事物在出现,今天的漠视明天的落后,不浪费每一个学习的时刻,学习助力非凡。

技术支持 Discuz! X3.4 - 3.5 beta © 2001-2019 Comsenz Inc.

小黑屋|手机版|优创意 ( 粤ICP备16085288号-1 )|申请友链

粤公网安备 44011102001144 号 GMT+8, 2020-10-26 10:07 , Processed in 0.085680 second(s), 26 queries , Gzip On.

快速回复 返回顶部 返回列表