前端丨如何使用 tcb-js-sdk 實現圖片上傳功能
前言
tcb-js-sdk 讓開發者可以在網頁端使用 JavaScript 程式碼服務訪問雲開發的服務,以輕鬆構建自己的公眾號頁面或者獨立的網站等 Web 服務。本文將以實現圖片上傳功能為例,介紹 tcb-js-sdk 的基本配置流程。
在使用雲開發 Cloudbase 開發應用的過程中,除了藉助雲開發提供的資料庫儲存資料以外,常常還會遇到需要實現圖片上傳功能的需求,在這種情況下,可以通過 tcb-js-sdk 來完成圖片上傳的功能。接下來,我們來開發一個簡易的圖片上傳功能,作為演示。
主要流程:
1. 引入 tcb-js-sdk
想要使用 tcb-js-sdk 來完成開發,我們需要在專案中引入 tcb-js-sdk ,從而可以藉助其提供的 API 實現簡單的呼叫雲開發各項能力。
在具體的接入時,可以根據你的專案型別,選擇使用 CDN 接入還是通過包管理器接入,這裡我使用 CDN 來完成接入。
在專案中新增如下程式碼,並根據 NPM 上的說明,選擇最新版本的 SDK ,比如當前最新版本是 1.7.1 版本,就可以將下方程式碼中的 ${version}
替換為 1.7.1 。
```html
const app = tcb.init({ env: 'your-env-id' //填寫雲環境ID }); const auth = app.auth();```
2. 配置使用者登入
雲開發的 API 呼叫需要使用者具備身份,為了簡化,這裡我選擇使用匿名登入,這樣就可以更簡單的完成專案的開發。關於匿名登入的使用者配置,你可以在雲開發的官方文件中找到相關的說明。當你將你的登入配置成這樣的時候,就說明配置好了使用者登入。
此外,你還需要將需要呼叫雲開發 SDK 的網頁配置到安全域名中,從而確保可以正常呼叫 API 介面。
在完成了使用者登入的配置以後,可以在專案程式碼中加入使用者匿名登入的配置
```html const app = tcb.init({ env: 'your-env-id' //填寫雲環境ID }); const auth = app.auth();
auth.anonymousAuthProvider().signIn() // 匿名登入,實際業務時根據需要進行調整 .then(() => { console.log("登陸成功") //登入成功 }).catch(err => { console.log("登入失敗",err) //登入失敗 }) ```
3. 編寫上傳程式碼
在完成了基礎的使用者登入後,就可以編寫具體的上傳程式碼了。
在具體的實現過程中,我在頁面中放置了一個按鈕,用作圖片選擇,並放置一個 Button 用來確認選擇,並提交選擇。具體的頁面結構程式碼如下:
```html
```
有了頁面的程式碼,我們就可以通過編寫程式碼來獲取我們所選擇的檔案,並將其上傳到雲端儲存中,獲得訪問連結。
具體的獲取檔案的程式碼如下:
``` var fileinput = document.getElementById('pic'), preview = document.getElementById('preview'); // 獲取物件 fileinput.addEventListener('change',function(){//監聽 input 的 change事件 if (!fileinput.value) { // 判斷當前是否有檔案 console.log('no pic'); return; } else{ console.log('success') } var file = fileinput.files[0];//如果有,則獲取到檔案 if (file.type !== 'image/jpeg' && file.type !== 'image/png' && file.type !== 'image/jpg') {//判斷檔案是否符合img alert('僅支援jpeg和png'); fileinput.value = '';//如不符合則清空value以及backgroundImage preview.style.backgroundImage = 'url(#)'; return; }else{ var reader = new FileReader(); reader.onload = function(e){ var data = e.target.result; preview.style.backgroundImage = 'url(' + data + ')'; } reader.readAsDataURL(file); console.log(file.name) }
}) ```
當我們拿到資料以後,我們就可以藉助 app.uploadFile
將其上傳到雲端儲存中,實現本地檔案的上傳。
javascript
function upload(){
app
.uploadFile({
// 雲端路徑
cloudPath: document.getElementById('pic').files[0].name,
// 需要上傳的檔案,File 型別
filePath: document.getElementById('pic').files[0]
})
.then(res => {
// 返回檔案 ID
console.log(res.fileID)
console.log('上傳成功')
})
}
以及,如果你在上傳完成後,希望獲取到圖片的下載地址,則可以呼叫 app.getTempFileURL
來獲取圖片的訪問地址。
javascript
app
.getTempFileURL({
fileList: [res.fileID]//要下載的檔案 ID 組成的陣列 本示例填寫為上面程式碼的檔案id
})
.then(res => {
res.fileList.forEach((el) => {
if(el.code === 'SUCCESS') {
console.log(el.tempFileURL)//列印下載地址
} else {
console.log('獲取地址失敗')//獲取地址失敗
}
})
});
}
4. 部署應用上線
在完成了基礎功能的編寫後,我們可以藉助雲開發提供的靜態託管能力,快速將專案部署上線。
在雲開發控制檯中開通靜態託管服務:
並安裝 Cloudbase Framework ,來實現快速部署:
bash
npm install -g @cloudbase/cli@beta # 安裝 cloudbase framework
cloudbase login # 登入
cd 專案目錄
cloudbase init --without-template # 初始化部署模板
cloudbase framework:deploy # 部署專案
根據提示,完成部署,就可以看到我們的專案的訪問地址。
總結
通過引入 tcb-js-sdk ,我們可以十分方便的在 Web 應用中引入雲開發的檔案儲存系統。對於前端來說,可以更加簡單的完成資料儲存相關邏輯的編寫,對於前端開發者來說,十分的友好,特別是一些快節奏的業務開發,可以藉助 tcb-js-sdk 實現業務需求。
文章的專案原始碼: https://github.com/Handsomedoggy/cloudbase-image-upload-example
【產品介紹】雲開發(CloudBase)是雲端一體化的後端雲服務,採用 serverless 架構,免去了移動應用構建中繁瑣的伺服器搭建和運維。同時雲開發提供的靜態託管、命令列工具(CLI)、Flutter SDK 等能力極大的降低了應用開發的門檻。使用雲開發可以快速構建完整的小程式/小遊戲、H5、Web、移動 App 等應用。 技術文件:https://cloudbase.net?from=10004 技術交流加Q群:601134960 最新資訊關注微信公眾號【騰訊云云開發】
相關文章
- node+express實現圖片上傳功能Express
- vue 實現貼上上傳圖片Vue
- Django實現圖片上傳並前端頁面顯示Django前端
- formData原生實現圖片上傳ORM
- element-ui圖片上傳元件實現前端直傳阿里雲UI元件前端阿里
- 前端的圖片壓縮image-compressor(可在圖片上傳前實現圖片壓縮)前端
- 使用Vue實現圖片上傳的三種方式Vue
- 短視訊平臺開發,圖片上傳和圖片預覽功能實現
- PHP實現圖片(檔案)上傳PHP
- 前端實現圖片上傳預覽並轉換base64前端
- 前端圖片壓縮及上傳前端
- FileReader初步使用實現上傳圖片預覽效果
- 線上直播系統原始碼,Node.js中使用Koa實現上傳圖片功能原始碼Node.js
- (H5)canvas實現裁剪圖片和馬賽克功能,以及又拍雲上傳圖片H5Canvas
- layui中實現上傳圖片壓縮UI
- 通過API介面實現圖片上傳API
- HTML5實現圖片上傳2HTML
- 如何實現一個簡易的圖片上傳Web ServerWebServer
- 如何呼叫第三方API實現圖片上傳。API
- 前端實操案例丨如何實現JS向Vue傳值前端JSVue
- Vue +Element Ui 使用Upload元件實現多圖片上傳VueUI元件
- web前端圖片上傳(3)–filereaderWeb前端
- Java實現圖片上傳到伺服器,並把上傳的圖片讀取出來Java伺服器
- angularjs 實現圖片上傳實時預覽AngularJS
- Laravel 使用 FastDFS 上傳圖片LaravelAST
- 線上教育平臺開發中,作業功能中的圖片上傳是如何實現的
- element-ui+Vue實現的圖片上傳UIVue
- Ajax+PHP實現非同步圖片上傳PHP非同步
- django 實現圖片上傳和顯示操作Django
- jsp+springmvc實現檔案上傳、圖片上傳和及時預覽圖片JSSpringMVC
- 使用 HTML5 Canvas 實現圓形圖片裁剪並上傳HTMLCanvas
- 騰訊cos安裝,上傳圖片實際使用
- 笨辦法學前端之圖片上傳前端
- SpringMVC實現ajax上傳圖片實時預覽SpringMVC
- mino如何上傳同名的圖片
- 前端使用 JS 上傳圖片至阿里雲 ali-oss前端JS阿里
- 上傳圖片
- struts:實現圖片的上傳 argument type mismatch errorError