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) } })