使用cos-js-sdk-v5腾讯云实现cos文件上传

官方地址
快速入门

1. 封装uploadFile.ts

安装命令

npm i cos-js-sdk-v5 --save
import COS from "cos-js-sdk-v5";
import axios from "axios";

const url = ""; // 获取oss基本信息接口地址,这个根据公司来,有些公司不需要请求,公司负责人直接给你,我这里需要请求才能拿到oss基本配置信息
let percentNum = 0;

/**
 * 生成随机数
 * @param num 倍数
 * @param basic 基数
 * @returns
 */
const randomNum = (num: number, basic: number) => {
  return Math.floor(Math.random() * num + basic);
};

/**
 * 上传图片方法
 * @param file 文件
 * @param callbackPercent 进度值回调函数 这个可以不需要,就是一个进度显示0~100的,我自己写的,oss也有。就是下面的onProgress里面,会返回,上传进度,速度,大小等信息,但个人感觉不太好
 * @param callback 结果回调函数, code 为1是成功,0是失败,data是成功后图片地址
 */
const uploadFile = (file: any, callbackPercent: any, callback: any) => {
  percentNum = randomNum(10, 0); // 0~10
  callbackPercent({ percent: percentNum });
  // 这里走接口,是走我自己公司的接口获取公司的oss配置信息(也就是密钥相关信息),后面要用到,如果公司直接给你,就不需要走接口的
  axios
    .post(url, {参数})
    .then((res: any) => {
      const { data } = res.data;
      percentNum = randomNum(20, 20); // 20 ~ 40
      callbackPercent({ percent: percentNum });
      if (data) {
        // 解构获取oss的基本数据
        const {
          oss_bucket,
          oss_expired_time,
          oss_path,
          oss_region,
          oss_session_token,
          oss_start_time,
          oss_tmp_secret_id,
          oss_tmp_secret_key,
        } = data;

        // new 一个COS对象
        const cos = new COS({
          // 必选参数
          getAuthorization: (options: any, callback: any) => {
            callback({
              TmpSecretId: oss_tmp_secret_id,
              TmpSecretKey: oss_tmp_secret_key,
              XCosSecurityToken: oss_session_token,
              StartTime: oss_start_time, // 时间戳,单位秒,如:1580000000
              ExpiredTime: oss_expired_time, // 时间戳,单位秒,如:1580000900
              ProgressInterval: 0.001, // 设置onProgress回调此时,默认1000ms一次,但个人感觉没啥用,详细看官网地址
            });
          },
        });
        percentNum = randomNum(20, 50); // 50 ~ 70
        callbackPercent({ percent: percentNum });
        // 上传图片  其中Bucket 和 Region 接口返回,Bucke和Region是由公司负责人使用公司账户,登入腾讯云,获取回来的。
        //key 在前面加上路径写法可以生成文件夹
        cos.uploadFile(
          {
            Bucket: oss_bucket /* 必须 */,
            Region: oss_region /* 存储桶所在地域,必须字段 */,
            Key: oss_path + new Date().getTime() + file.name /* 必须  这个值要注意下,前面是要跟公司设置的oss路径要匹配的,不然上传可能会报403*/,
            StorageClass: "STANDARD",
            Body: file, // 上传文件对象
            SliceSize:
              1024 *
              1024 *
              3 /* 触发分块上传的阈值,超过3MB使用分块上传,非必须 */,
            onProgress: (progressData: any) => {
              // 上传进度回调,不过感觉不怎么样
              const { percent } = progressData;
              if (percent === 1) {
                percentNum = randomNum(4, 91); // 91 ~ 95
                callbackPercent({ percent: percentNum });
              } else {
                percentNum = randomNum(10, 80); // 80 ~ 90
                callbackPercent({ percent: percentNum });
              }
            },
          },
          (err: any, data: any) => {
            // 将上传后的封面进行路径拼接保存到本地
            if (data && data.statusCode === 200) {
              percentNum = randomNum(3, 96); // 96 ~ 99
              callbackPercent({ percent: percentNum });
              // 上传成功
              const url = "https://" + data.Location;
              setTimeout(() => {
                callbackPercent({ percent: 100 });
              }, 200);
              callback({
                code: 1,
                data: url,
              });
            } else {
              callbackPercent({ percent: 100 });
              // 上传失败,返回错误信息
              callback({
                code: 0,
                data: err,
              });
            }
          }
        );
      }
    })
    .catch((err: any) => {
      callbackPercent({ percent: 100 });
      // 上传失败,返回错误信息
      callback({
        code: 0,
        data: err,
      });
    });
};

export default uploadFile;

2. 页面调用

(1)引入ts

import uploadFile from "@/utils/uploadFileRequest";

(2)方法调用

uploadFile(
       file, // 上传文件
       (res: any) => {
        // 进度值回调函数,我公司上传有个进度显示,没有的话可以不用的
         const { percent } = res;
       },
       (res: any) => {
       // 上传结果回调
         const { code, data } = res;
         if (code === 0) {
           // 上传失败
           console.log('上传失败错误信息', data)
           this.$message.error("上传失败,请重新上传");
         }

         if (code === 1) {
           // 上传成功
           console.log('图片路径地址', data)
         }
       }
     );

3. 结尾
以上就是个人简单的封装了,详细文档,可以去官网阅读

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: cos-wx-sdk-v5.js是腾讯云对象存储(COS)微信小程序客户端SDK的版本号为5的文件COS是一种面向开发者的云存储服务,它为开发者提供了存储海量数据的能力。微信小程序客户端SDK则是为了更方便地在微信小程序中调用COS服务而开发的工具。 要下载cos-wx-sdk-v5.js文件,可以通过以下几个步骤进行: 首先,进入腾讯云COS官网,登录自己的账号。 接着,创建或选择已有的存储桶(Bucket),用于存储文件。存储桶相当于一个文件夹,在其下可以创建多个文件。 然后,在选择好存储桶后,需要进入控制台进行配置。在控制台中,可以设置存储桶的属性、权限等。 之后,在左侧导航栏中,点击"SDK与工具",然后选择"SDK下载"。 在SDK下载页面,找到微信小程序相关的部分,点击下载cos-wx-sdk-v5.js文件。在弹出的对话框中选择保存位置即可完成下载。 下载完成后,将cos-wx-sdk-v5.js文件添加到微信小程序的代码目录中,并在相关的页面中引入该文件。之后就可以使用该SDK来操作COS,比如上、下载、删除文件等。 总之,下载cos-wx-sdk-v5.js文件是为了在微信小程序中调用腾讯云对象存储服务,需要按照上述步骤从腾讯云COS官网下载并进行相应配置和引入到代码中才能使用。 ### 回答2: cos-wx-sdk-v5.js是腾讯云对象存储(COS)服务的微信小程序 SDK。通过该库,开发者可以在微信小程序中方便地使用腾讯云 COS 服务来存储和管理文件。 若要下载cos-wx-sdk-v5.js,可以按照以下步骤进行: 1. 首先,打开腾讯云 COS 官方网站(https://cloud.tencent.com/product/cos)。 2. 在网站上找到“产品概述”或“下载 SDK”等相关选项,点击进入。 3. 在 SDK 下载页面,选择适合微信小程序的版本,一般会有对应的链接提供下载。 4. 点击下载链接,浏览器会开始下载cos-wx-sdk-v5.js文件。 5. 下载完成后,可以将cos-wx-sdk-v5.js文件添加到微信小程序的项目目录中。 6. 在微信小程序的代码中使用require语句导入cos-wx-sdk-v5.js库。 7. 在需要使用腾讯云 COS 服务的地方,通过调用该库中的相关方法,即可实现COS 的交互。 需要注意的是,下载cos-wx-sdk-v5.js之前,可能需要先注册腾讯云账号,并在其控制台中创建好相应的 COS 存储桶(bucket)以及获取到访问 COS 的密钥等凭证信息。这些凭证信息通常需要在微信小程序中配置,以便与 COS 服务进行身份验证和授权。 总之,下载cos-wx-sdk-v5.js是为了在微信小程序中使用腾讯云 COS 服务,具体的下载步骤可以参考官方文档或相关教程,以确保正确导入和使用该库。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值