javaScript前端上传文件到腾讯云(对象存储)

需要分析 因服务器部署前后端前端TG 后端HK。上传一个文件需要的时间太长,导致的是用户体验太差。所以由前端将文件上传到服务器,将文件上传到阿里云或者腾讯云上,我们需要的时候将URL拿到就可以,这样是速度最快的。

第一步下载cos 使用之前先将js下载下来:

npm i cos-js-sdk-v5 --save

第二步创建一个uploadFile.js

// npm install cos-js-sdk-v5
import COS from cos-js-sdk-v5
import env from @/api/env;
import {
          
    setSessionStorage, getSessionStorage } from ./storage
// 定义一个cos 对象
const cos = new COS({
          
   
  // getAuthorization 必选参数
  getAuthorization: async (options, callback) => {
          
   
    // 异步获取临时密钥
    axios.post(env[starLink] + /sysUploadFile/getAuthorization).then(({
           
     data }) => {
          
   
      if (data.code === 200) {
          
   
        setSessionStorage("cosList", JSON.stringify(data.rows));
        callback({
          
   
          TmpSecretId: data.rows.cred.cOSAccessKeyId,
          TmpSecretKey: data.rows.cred.cOSSecretKey,
          XCosSecurityToken: data.rows.securityToken,
          ExpiredTime: 1800,
          ScopeLimit: true, // 细粒度控制权限需要设为 true,会限制密钥只在相同请求时重复使用
        });
      } else {
          
   
        this.$message.error(data.info)
      }
    }).catch(err => {
          
   
    })
  }
});
var cdn = {
          
   
  uploadAPIFile: (key, file, fn) => {
          
   
    if (!file) return;
    const cosList = JSON.parse(getSessionStorage(cosList))
    cos.putObject(
      {
          
   
        Bucket: cosList.bucket,  //存储桶用户识别   (必须有)
        Region: cosList.clientConfig.region.regionName,     //地区识别(必须有)
        Key: `${
            
     key}${
            
     file.name}`, // 图片名称
        Body: file,
      },
      function (err, data) {
          
   
        /*这里是为了调试你的代码,能够拿到报错信息*/
        if (err) {
          
   
          this.error(file)
          fn(false)
        } else {
          
   
          let cosUrl = `http://${
            
     data.Location}`
          fn(cosUrl)
        }
      }
    );
  },
 // delAPIFile: (key, file, fn) => {
          
   
 // 	删除 等就按照正常官网文档编写
 // }
}
export default cdn

第三步所需组件引入

import cdn from "./../../public/upload";

第四步使用

cdn.uploadAPIFile(, fileobj.file, (val) => {
          
   
    if (val) {
          
   
	  	this.imgUrl = val;
  		this.imgLoading = false;
     	this.$emit("update:imgUrl", val)
     	this.$emit("issuccess", val)
     	console.log(val)
   	} else {
          
   
    	 console.log(111111111111111)
   	}
 })
经验分享 程序员 微信小程序 职场和发展