小程序開發(fā)上傳圖片如何實現(xiàn)
很多小程序都為用戶提供圖片上傳功能。這時候,使用一些「對象存儲」云服務(wù),也許是最快、最經(jīng)濟的選擇。那么,小程序該如何使用這類服務(wù)呢?使用的時候,又應(yīng)該注意哪些問題呢?
小功能程序今天分享的這篇文章,會以騰訊云的對象存儲服務(wù)為例,教大家將小程序接入對象存儲服務(wù)。
準(zhǔn)備工作
上傳圖片,主要是將圖片上傳到騰訊云對象存儲(COS)。要使用對象存儲 API,需要先執(zhí)行以下步驟:
購買騰訊云對象存儲(COS)服務(wù)。
在騰訊云 對象存儲控制臺 里創(chuàng)建一個 Bucket。
在控制臺「個人 API 密鑰」頁面里,獲取 AppID、SecretID、SecretKey 等內(nèi)容。
編寫一個請求簽名算法程序(或使用任何一種服務(wù)端 SDK)
計算簽名,調(diào)用 API 執(zhí)行操作。
所以,我們要做的準(zhǔn)備工作有:
進入騰訊云官網(wǎng)(www.qcloud.com),注冊帳號。
登錄云對象存儲服務(wù)(COS)控制臺,開通 COS 服務(wù),創(chuàng)建資源需要上傳的 Bucket。
在公眾平臺小程序后臺中,配置相關(guān)域名信息(否則無法在小程序中發(fā)起對該域名的請求)。
這些配置過程這里就不做說明了,接下來主要介紹步驟 4 和 5。小程序上傳圖片到 COS 的流程圖,如下:在這個過程中我們需要實現(xiàn)的是,鑒權(quán)服務(wù)器返回簽名的步驟,以及小程序處理圖片的相關(guān)步驟。COS 鑒權(quán)服務(wù)使用對象存儲服務(wù) COS 時,可通過 RESTful API,對 COS 發(fā)起 HTTP 匿名請求或簽名請求。對于簽名請求,COS 服務(wù)器端將會進行對請求發(fā)起者的身份驗證。
匿名請求:HTTP 請求不攜帶任何身份標(biāo)識和鑒權(quán)信息,通過 RESTful API 進行 HTTP 請求操作。
簽名請求:HTTP 請求時添加簽名,COS服務(wù)器端收到消息后,進行身份驗證,驗證成功則可接受并執(zhí)行請求,否則將會返回錯誤信息并丟棄此請求。
騰訊云 COS 對象存儲,基于密鑰 HMAC(Hash Message Authentication Code)的自定義 HTTP 方案,進行身份驗證。在此例中,上傳圖片是一個簽名請求,需要進行簽名驗證。
1. 簽名流程客戶通過對 HTTP 請求進行簽名,并將簽名后的請求發(fā)送至騰訊云進行簽名驗證,具體流程如下圖所示:我們使用 SDK 開發(fā),只需要大致了解這個流程就行。在 SDK 中已包含簽名的實現(xiàn),我們只需要調(diào)用 SDK 中的方法即可。通過簽名流程我們可以知道,簽名需要 SECRTID和 secretkey,這兩個信息不適合存放在客戶端中,這也是我們單獨部署一個鑒權(quán)服務(wù)器的主要原因。
2. 生成簽名的接口在之前的文章中,我介紹過,我在服務(wù)端使用 sanic 框架和 swagger_py_codegen生成 Rest API。為了完成簽名生成 API,我們需要先在文檔中添加 API 的相關(guān)描述。這個接口我們要求登錄才能調(diào)用。
文檔定義完成之后,調(diào)用 swagger_py_codegen>s docs/v1.ym1 . p apis -tlp sanic生成代碼模板。API 代碼實現(xiàn)如下:由于騰訊云 COS v4 的 Python SDK 只支持 Python 2,而 sanic 需要 Python 3.5+,所以,這里我 fork 出來一份添加了 Python 3 的支持,使用 Python 3 的開發(fā)者,可以使用它。
上傳的文件目錄
在此來獲取圖片的上傳進度,所以在這里,我將圖片的上傳進度顯示了出來。
HiShop小程序工具提供多類型商城/門店小程序制作,可視化編輯 1秒生成5步上線。通過拖拽、拼接模塊布局小程序商城頁面,所看即所得,只需要美工就能做出精美商城。
更多小程序開發(fā)案例,盡在:http://westcoastpropertyservices.com/xiaocx/kaifa.html