Vue3_對接騰訊云COS_大文件分片上傳和下載

目錄

?一、騰訊云后臺配置

二、安裝SDK

1.script 引入方式

2.webpack 引入方式

三、文件上傳

1.new COS 實例

2.上傳文件

四、文件下載


騰訊云官方文檔:

騰訊云官方文檔icon-default.png?t=N7T8https://cloud.tencent.com/document/product/436/11459

?一、騰訊云后臺配置

1.登錄 對象存儲控制臺 ,創建存儲桶。獲取存儲桶名稱和 地域名稱。

2. 登錄 訪問管理控制臺 ,獲取您的項目 SecretId 和 SecretKey。

3. 配置 CORS 規則,AllowHeader 需配成*,ExposeHeaders 需要 ETag、Content-Length 以及其他 js 需要讀取的 header 字段,如下圖所示。操作詳情請參見 設置跨域訪問 文檔。

二、安裝SDK

1.script 引入方式

<!--src為本地路徑 根據自己項目目錄結構來調整-->
<script src="../dist/cos-js-sdk-v5.min.js"></script>

2.webpack 引入方式

安裝:

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

引入:

// node引入方式
const COS = require('cos-js-sdk-v5');// js引入方式
import COS from 'cos-js-sdk-v5';

三、文件上傳

本案例用npm方式安裝SDK,使用js方式引入。文件上傳使用的是,高級上傳,高級上傳接口 uploadFile,自動針對小文件使用簡單上傳,大文件使用分塊上傳,性能更好。

騰訊云文件高級上傳參數icon-default.png?t=N7T8https://cloud.tencent.com/document/product/436/64960#.E9.AB.98.E7.BA.A7.E4.B8.8A.E4.BC.A0

1.new COS 實例

import COS from "cos-js-sdk-v5";const cos = new COS({// getAuthorization 必選參數getAuthorization: function (options, callback) {callback({TmpSecretId: "在控制臺查看",TmpSecretKey: "在控制臺查看",SecurityToken: "臨時密鑰_后端返回來的",ExpiredTime: "臨時密鑰到期時間_后端返回來的", // 時間戳,單位秒,如:1580000000});},
});

后端獲得臨時密鑰的步驟:

后端獲得臨時密鑰并返給前端icon-default.png?t=N7T8https://cloud.tencent.com/document/product/436/14048

2.上傳文件

文件上傳,我們用的高級上傳接口,自動識別,小文件(低于你設置的數據)直接上傳,大文件分片上傳。

<template><!-- 上傳組件用的el-upload --><el-uploadclass="upload-demo"action="#"dragmultiple:auto-upload="false":show-file-list="true"v-model:file-list="fileList":on-change="(file, fileList) => {handleChange(file, fileList);}":on-remove="handleRemove"><el-icon class="el-icon--upload"><upload-filled /></el-icon><div class="el-upload__text">拖拽文件到這里或者<em>點擊上傳</em></div></el-upload>
</template><script setup>import COS from "cos-js-sdk-v5";
import { computed, reactive } from "vue";//從后端獲得臨時密鑰的請求接口,換成你自己的
import { reqCloudInfo } from "@/api";const state = reactive({result: "",
});//從后端獲得請求臨時密鑰,換成你自己的
const getData = async () => {let result = await reqCloudInfo();if (result != undefined) {if (result.error_code == 0) {state.result = result;} else {console.log(result);}}
};
getData ();// new 一個COS實例
const cos = new COS({getAuthorization: function (options, callback) {//credentials ,按照你的后端返回來的數據自行賦值let credentials = state.result.datas_info.Credentials;callback({TmpSecretId: credentials.TmpSecretId,TmpSecretKey: credentials.TmpSecretKey,SecurityToken: credentials.Token,ExpiredTime: state.result.datas_info.ExpiredTime, // 時間戳,單位秒,如:1580000000});},
});// 文件上傳 選擇文件時觸發(:on-change事件)
const handleChange = (uploadFile, uploadFiles) => {//cosData ,根據你后端返回的數據自行賦值let cosData = state.result.datas_info;cos.uploadFile({Bucket: cosData.Bucket /* 填入您自己的存儲桶,必須字段 */,Region: cosData.Region /* 存儲桶所在地域,例如ap-beijing,必須字段 */,Key:cosData.Key +"/1.jpg" /* 存儲在桶里的對象鍵(例如1.jpg,a/b/test.txt),必須字段 */,Body:uploadFile.raw /* 必須,上傳文件對象,可以是input[type="file"]標簽選擇本地文件后得到的file對象 */,SliceSize: 1024 * 1024 * 5 /* 觸發分塊上傳的閾值,超過5MB使用分塊上傳,非必須 */,onTaskReady: function (taskId) {/* 非必須 */console.log(taskId);},onProgress: function (progressData) {/* 非必須 */console.log(JSON.stringify(progressData));},onFileFinish: function (err, data, options) {/* 非必須 */console.log(options.Key + "上傳" + (err ? "失敗" : "完成"));},},function (err, data) {console.log(err || data);});
};</script><style scoped></style>

如果報錯403:

報錯403解決辦法icon-default.png?t=N7T8https://cloud.tencent.com/document/product/436/54303#message-.E4.B8.BA-.E2.80.9Caccess-denied..E2.80.9D

如果報了“Access Denied.”,就是后端臨時密鑰權限不對,讓他添加相應字段即可。上傳文件的,分片上傳的,文件讀取下載的。

四、文件下載

下載文件到本地:

import COS from "cos-js-sdk-v5";const cos = new COS({// getAuthorization 必選參數getAuthorization: function (options, callback) {callback({TmpSecretId: "在控制臺查看",TmpSecretKey: "在控制臺查看",SecurityToken: "臨時密鑰_后端返回來的",ExpiredTime: "臨時密鑰到期時間_后端返回來的", // 時間戳,單位秒,如:1580000000});},
});//文件下載
cos.getObject({Bucket:  /* 填入您自己的存儲桶,從后端返回的數據獲取*/,Region:  /* 存儲桶所在地域,例如ap-beijing*/,Key:  /*你的key*/,DataType: "blob",onProgress: function (progressData) {},},function (err, data) {if (data.Body) {//通過瀏覽器下載const myBlob = new window.Blob([data.Body], { type: data.Body.type });let name = "文件名字通過cosData.Key獲取";const qrUrl = window.URL.createObjectURL(myBlob);var fileLink = document.createElement("a");fileLink.href = qrUrl;fileLink.setAttribute("download", name);document.body.appendChild(fileLink);fileLink.click();}});

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/23969.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/23969.shtml
英文地址,請注明出處:http://en.pswp.cn/web/23969.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

[職場] 為什么不能加薪? #學習方法#知識分享#微信

為什么不能加薪&#xff1f; 不能加薪的根本原因&#xff0c;終于被我找到了&#xff01; 朋友們&#xff01;職場這個地方是個很神奇的世界&#xff0c;有些規則并不是你想象的那樣。我們都希望能在這個世界里施展自己的才華&#xff0c;獲得升職加薪的榮耀。然而&#xff0c…

seerfar丨OZON運營工具,OZON選品插件

隨著全球電商市場的蓬勃發展&#xff0c;OZON作為俄羅斯及東歐地區的重要電商平臺&#xff0c;吸引了眾多中國商家的目光。然而&#xff0c;如何在OZON平臺上脫穎而出&#xff0c;實現高效的商品運營&#xff0c;成為了眾多商家亟待解決的問題。在這樣的背景下&#xff0c;seer…

tailwindcss的@apply使用

tailwindcss的apply是把在html寫的tailwindcss可以挪到style里面 簡化頁面的可讀性 沒寫之前的 <section class"block-risk absolute flex flex-col items-center p-4 text-center left-0 text-white;" :style"{ top, left: 60px }"> </section…

淺析軟件開發技術的發展歷程與展望

隨著信息技術的飛速發展&#xff0c;軟件開發技術也在不斷演進。本文旨在深入探討軟件開發技術的發展歷程&#xff0c;并分析其未來的發展趨勢和展望。 軟件開發技術的發展歷程 在回顧軟件開發技術的發展歷程時&#xff0c;我們不禁驚嘆于這一領域的飛速進步。從早期的手工編寫…

被拖欠6000萬,代工大廠倒閉了····

6月7日消息&#xff0c;據綜合媒體報道&#xff0c;電子煙代工大廠佳斯特電子&#xff08;東莞&#xff09;發布公告&#xff0c;將自6月3日起停止一切經營活動&#xff0c;開始自行清算工作。根據佳斯特電子科技&#xff08;東莞&#xff09;有限公司的通告&#xff0c;由于公…

pyqt6 任務欄不顯示設置的icon

添加這段代碼即可解決 import ctypes myappid mycompany.myproduct.subproduct.version ctypes.windll.shell32.SetCurrentProcessExplicitAppUserModelID(myappid)

TypeScript環境安裝與VScode編輯器的使用

說明大背景環境&#xff0c;我用的是window10系統。 1.安裝node.js 。 去官網下載安裝包。 雖然我去的是官網&#xff0c;但是不知為何下載了個不知名的東西&#xff0c;后來又找了個鏈接才下載正確了。 實際上就是一個.msi的文件。我用的版本&#xff1a;node-v18.19.0-x6…

最大矩形問題

柱狀圖中最大的矩形 題目 分析 矩形的面積等于寬乘以高&#xff0c;因此只要能確定每個矩形的寬和高&#xff0c;就能計算它的面積。如果直方圖中一個矩形從下標為 i 的柱子開始&#xff0c;到下標為 j 的柱子結束&#xff0c;那么這兩根柱子之間的矩形&#xff08;含兩端的柱…

能把試卷上的字消除的軟件有哪些?推薦三款好用的

能把試卷上的字消除的軟件有哪些&#xff1f;在數字化時代&#xff0c;我們越來越依賴科技手段來解決生活中的各種問題。其中&#xff0c;試卷上的字消除問題&#xff0c;就是一個備受關注的痛點。幸運的是&#xff0c;現在市面上已經出現了多款能夠輕松消除試卷上字跡的軟件&a…

力扣hot100:295. 數據流的中位數(兩個優先隊列維護中位數)

LeetCode&#xff1a;295. 數據流的中位數 這個題目最快的解法應該是維護中位數&#xff0c;每插入一個數都能快速得到一個中位數。 根據數據范圍&#xff0c;我們應當實現一個 O ( n l o g n ) O(nlogn) O(nlogn)的算法。 1、超時—插入排序 使用數組存儲&#xff0c;維持數…

【WEB自動化面試02--學習過程的問題及解決】

day01 1、報錯獲取不到瀏覽器二進制文件&#xff1a;需要指定瀏覽器路徑及驅動路徑。 第一次使用谷歌瀏覽器驅動&#xff0c;找不到二進制文件報錯&#xff1a; selenium.common.exceptions.WebDriverException: Message: unknown error: cannot find Chrome binary Stacktra…

短視頻矩陣源碼----如何做正規開發規則分享:

一、什么是SaaS化服務技術開發&#xff1f; &#xff08;短視頻矩陣系統是源頭開發的應該分為3個端口---- 總后臺控制端、總代理端口&#xff0c;總商戶后臺&#xff09; SaaS是軟件即服務&#xff08;Software as a Service&#xff09;的縮寫。它是一種通過互聯網提供軟件應…

Vue2(0基礎入門)

環境準備 安裝腳手架 vuecli: npm install -g vue/clivite: npm init vuelatest-g 全局安裝&#xff0c;任意目錄都可以使用vue腳本 進入目錄創建項目&#xff1a; 在目錄的終端輸入&#xff1a;vue ui安裝devtool(這個網頁是安裝好了自動跳轉的) 運行項目&#xff1a; …

代碼隨想錄第27天|貪心算法part1

455.分發餅干 先給孩子和餅干排序&#xff0c;每次選取一個最大的餅干給一個最大胃口的孩子&#xff0c;直到餅干分完或者遍歷完孩子 class Solution { public:int findContentChildren(vector<int>& g, vector<int>& s) {sort(g.begin(), g.end());sort(…

Vue3【三】 使用TS自己編寫APP組件

Vue3【三】 使用TS自己編寫APP組件 運行截圖 目錄結構 注意目錄層級 文件源碼 APP.vue <template><div class"app"><h1>你好世界!</h1></div> </template><script lang"ts"> export default {name:App //組…

JavaScript的核心語法

JavaScript JavaScript&#xff1a;JavaScript的組成&#xff1a;核心語法&#xff1a;Hello&#xff1a;變量&#xff1a;JS的基本數據類型&#xff1a;特殊點&#xff1a; 數組&#xff1a;流程控制語句&#xff1a;函數&#xff1a;函數的重載&#xff1a;函數的遞歸:預定義…

在 VSCode 中搭建 Flutter 開發環境并運行項目

要在 Visual Studio Code (VSCode) 中運行 Flutter 項目并啟動虛擬機&#xff08;例如 Android Emulator&#xff09;&#xff0c;可以按照以下步驟進行設置和操作&#xff1a; 一、安裝 Flutter 和 Dart 插件 安裝 Flutter SDK&#xff1a; 前往 Flutter 官網 下載并安裝 Flu…

離散數學答疑 3

&#xff5e;A&#xff1a;A的補集 有時候空集是元素&#xff0c;有時候就是純粹的空集 A-B的定義&#xff1a; 笛卡爾積&#xff1a; 求等價關系&#xff1a;先求劃分再一一列舉 不同劃分&#xff1a;分幾塊。一塊&#xff1a;兩塊&#xff1a;三塊&#xff1a;分別計算 Ix是…

自然語言處理(NLP)—— 主題建模

1. 主題建模的概念 主題建模&#xff08;Topic Modeling&#xff09;是一種用于發現文檔集合&#xff08;語料庫&#xff09;中的主題&#xff08;或稱為主題、議題、概念&#xff09;的統計模型。在自然語言處理和文本挖掘領域&#xff0c;主題建模是理解和提取大量文本數據隱…

【常用工具系列】Git 教程——從入門到大師

目錄 前言一、Git 基礎1-1、Git 簡介與安裝安裝 Git 1-2、 Git 工作流程1-3、 Git 配置與管理用戶配置查看配置 1-4、 Git 倉庫操作克隆倉庫推送更改拉取更新 1-5 Git 分支管理創建分支切換分支刪除分支解決沖突 二、 Git 進階2-0、 Git 標簽使用創建標簽查看標簽檢出標簽推送標…