腾讯云对象存储——Node.js SDK

怀齐智
2023-12-01

腾讯云对象存储——Node.js SDK

SDK : Node.js SDK;

调试流程

一、调试第一个API —— Get Service

对于这个API, 文档上是这样说的:

Get Service接口实现获取该用户下所有Bucket列表。该API接口需要使用Authorization签名认证,且只能获取签名中AccessID所属账户的Bucket列表。

事实并非如此,getService 仅能获取到默认项目下的Bucket列表,无法获取到用户自己创建的项目下的Bucket列表。

二、上传文件API —— Put Object

此API的必要参数有Bucket、Region、Key,ContentLength,以及Body, 由API源文件中的代码 var readStream = body;可知,Body的类型是readStream, 故

var params = {
    Bucket : 'STRING_VALUE', //your bucket name
    Region : 'STRING_VALUE', //your region
    Key : 'STRING_VALUE', //file name,
    ContentLength : 'STRING_VALUE', //file length
    Body :  'readStream' //your file
}

由于文件的长度是必要参数,而浏览器中的content-length是整个请求的长度。为了解决文件长度问题,引入nodejs的busboy模块来完成文件上传。

三、获取文件API —— Get Object

文件上传成功后,腾讯云只返回了一个ETag,需要自己拼接文件的url。

完整的文件url是<BucketName>-<AppID>.<Region>.myqcloud.com/<fileName>?sign=,签名如何生成可以参考文档中“签名算法”,根据文档可知,使用的是HMAC-SHA1算法。可以使用github上的开源库或者自己实现。

这里还有一个简便的方法,腾讯云对象存储在github中的demo中完成了sign生成,直接引入自己的项目即可。

四、上传文件的名字相同

对于相同名字的文件,新的文件会覆盖旧的文件,如果不希望旧的文件被覆盖,需要在文件名字后面加上后缀,来保证文件名的唯一,可以使用uuid来作为后缀。

 类似资料: