用ali-oss实现文件上传

988 阅读3分钟

「这是我参与2022首次更文挑战的第11天,活动详情查看:2022首次更文挑战

image.png

ali-oss是什么?

阿里云官网是这样定义的:

阿里云对象存储OSS(Object Storage Service)为您提供基于网络的数据存取服务。使用OSS,您可以通过网络随时存储和调用包括文本、图片、音视频在内的各类数据文件。

ali-oss 文档

npmjs: www.npmjs.com/package/ali…

github: github.com/aliyun/oss-…

阿里云文档: help.aliyun.com/product/318…

ali-oss的优点?

1、具有与平台无关的 RESTful API 接口,您可以在任何应用、任何时间、任何地点存储和访问任意类型的数据。兼容 AWS S3 协议以及 API ,提供了多样化语言的 SDK 支撑;以及 RESTFUL 形式 API 调用。

2、数据存储到阿里云 OSS 以后,您可以选择标准存储(Standard)作为移动应用、大型网站、图片分享或热点音视频的主要存储方式,也可以选择成本更低、存储期限更长的低频访问存储(Infrequent Access)和归档存储(Archive)作为不经常访问数据的存储方式。

3、可以结合媒体处理进行转码,OSS 作为输入输出的 bucket;可以结合 视频直播使用作为文件录制的存储;可以作为直播推流来使用;

4、可以实现海量数据的互联网并发下载,OSS 作为客户的存储伪源,面向下游的 CDN 产品提供静态内容存储、分发到边缘节点的解决方案。利用CDN边缘节点缓存的数据,提升同一个文件,被同一地区客户大量重复并发下载的体验。同时可以结合自动刷新功能对同名文件上传进行刷新操作;

5、上传文件到OSS后,可以通过 OSS 自身的功能或者 媒体处理,对存储的媒体内容进行处理,例如图片处理,视频截帧等;

  1. 还有很多优点,比如大厂背书,服务器稳定。。。等等我就不在这里细讲了。

安装

npm install ali-oss --save

实现 demo

1. oss上传工具配置:

首先引入ali-oss,然后创建OSS对象,代码如下:

const OSS = require('ali-oss');
const client = new OSS({
  region: '<oss region>',
  accessKeyId: '<Your accessKeyId>',
  accessKeySecret: '<Your accessKeySecret>',
  bucket: '<Your bucket name>'
});

2. 分片上传

分片上传代码如下:

client(file)
          .multipartUpload(`${fileName}`, file, {
            progress: function(p) {
              //p进度条的值
              console.log(p);
            }
          })
          .then(result => {
            //上传成功返回值,可针对项目需求写其他逻辑
            console.log(result);
          })
          .catch(err => {
          //上传错误返回值,可针对项目需求写其他逻辑
            console.log("err:", err);
          });
      }

总结

通过上面两步就可以实现ali-oss文件上传,如果是大文件,还可以分片上传。其实很简单,也很方便,ali-oss还有有很多功能和特性,大家可以去看官方文档,具体怎么操作我就不在细讲了,大家可以用起来。我往期有一篇讲文件实现MD5的文章大家也可以去看看,这样你上传文件就有一套流程了!

相关文章

实现文件去重和大文件上传