【转载】文件预览-使用SecretID和SecretKey进行腾讯云cos桶文件预览(word、ppt等)

2022-06-15 19:47:17 浏览数 (1)

为什么使用存储桶

博主需要完成一个文件预览的功能,没想到React没有插件,可能是PPT、Word的版权问题,pdf就有viewer之类的包。也试了一下微软的,不太好用,很久没维护了,因此选择了腾讯云的存储桶,可以白嫖一波,50GB 6个月。

使用前的准备

服务开通

开通存储桶服务

腾讯云 存储桶

点击立即使用即可,会跳转至概览

开通数据万象服务

腾讯云-数据万象

数据万象服务能够进行文档预览,点击立即使用,进行开通

或者在存储桶放入文件,点击预览会引导你开通数据万象服务

JDK安装

代码语言:text复制
npm i cos-nodejs-sdk-v5 --save

使用

创建存储桶对象

代码语言:javascript复制
const cos = new COS({
  SecretId: process.env.SECRETID,
  SecretKey: process.env.SECRETKEY
});

在.env中填写SecretID与SecretKey,如下图所示

在这里插入图片描述在这里插入图片描述
代码语言:shell复制
SECRETID: "AKIDgAPO6XhaCXcPvA8qITN0MRFn32kBMFsE",
SECRETKEY: "7xPaV9VaOwDExQcXBYeT1II0SdYBXcQx",

这里其实设计的不太好,没必要是必填项,因为我写的代码只有读,又设置的公有读,所以根本不需要SecretID和SecretKey

文档列表

列出所有文档

代码语言:javascript复制
var listFolder = function(marker) {
    cos.getBucket({
        Bucket: 'examplebucket-1250000000', /* 填入您自己的存储桶,必须字段 */
        Region: 'COS_REGION',  /* 存储桶所在地域,例如ap-beijing,必须字段 */
        Prefix: 'a/',   /* Prefix表示列出的object的key以prefix开始,非必须 */
        Marker: marker,
        MaxKeys: 1000,
    }, function(err, data) {
        if (err) {
            return console.log('list error:', err);
        } else {
            console.log('list result:', data.Contents);
            if (data.IsTruncated === 'true') listFolder(data.NextMarker);
            else return console.log('list complete');
        }
    });
};
listFolder();

通过/分割,放到数组里即可,之后获取封面和预览时遍历数组,获得ObjectKey即可。

文档封面

代码语言:javascript复制
GET /<ObjectKey>?ci-process=doc-preview&page=<page>&srcType=<srcType>&ImageParams=<ImageParams> HTTP/1.1
Host: <BucketName-APPID>.cos.<Region>.myzijiebao.com
Date: GMT Date
Authorization: Auth String

将response作为img标签的src即可

文档预览

代码语言:javascript复制
GET /<ObjectKey>?ci-process=doc-preview&dstType=html HTTP/1.1
Host: <BucketName-APPID>.cos.<Region>.myzijiebao.com
Date: GMT Date

将reponse作为iframe的src即可

吐槽一下:腾讯的COS,某些语言的SDK不支持tag,只能调用API :(

参考

腾讯云Node.js的JDK

列出文档对象

下载对象

文档封面图片

文档转HTML

原文:https://blog.csdn.net/work_harder999/article/details/124279206

0 人点赞