小程序服务器七牛云,基于七牛云 API 开发的微信小程序 SDK
概述
Qiniu-wxapp-SDK 是七牛云在小程序上的實現,網絡功能依賴于微信小程序 API。您可以基于 SDK 方便的在小程序中上傳文件至七牛云。
Qiniu-wxapp-SDK? 為客戶端 SDK,沒有包含 token 生成實現,為了安全,token 建議通過網絡從服務端獲取,具體生成代碼可以參考以下服務端 SDK 的文檔。SDK Demo中暫時沒有包含這部分。
Java
PHP
Python
Ruby
Go
Node.js
C#
C/C++
功能簡介
上傳
其他功能在開發中,敬請期待。準備
從 github 上下載qiniuUploader.js,導入小程序工程。
在使用 SDK 之前,您必須先注冊一個七牛云帳號,并登錄控制臺獲取一對有效的 AccessKey 和 SecretKey,您可以閱讀如何接入七牛?和?安全機制?以進一步了解如何正確使用和管理密鑰 。
SDK 依賴服務端頒發 uptoken,可以通過以下二種方式實現:
利用七牛服務端 SDK?構建后端服務(建議的方式)
利用七牛底層 API 構建服務,詳見七牛上傳策略和上傳憑證
您需要了解您的七牛存儲空間設置在那個區域,比如華東,華南等,參見區域設置
后端服務應提供一個 URL 地址,供小程序請求該地址后獲得 uptoken。請求成功后,服務端應返回如下格式的 json(至少包含 uptoken 字段):
{
"uptoken": "0MLvWPnyya1WtPnXFy9KLyGHyFPNdZceomL..."
}
根據你創建的七牛存儲空間,把對應的 https 上傳地址添加到小程序的訪問白名單中,方法如下:
登錄?微信公眾平臺,前往?設置 - 開發設置,點擊?服務器配置?下的「修改」鏈接。
修改 uploadFile 域名(比如華北 https 上傳地址為:https://up-z1.qbox.com,地址不清楚請參見https地址附錄)
如果需要下載文件,則還需要一同設置?downloadFile 域名,為你的 bucket 下載地址
保存即可
字段名
內容
request 域名
https://yourServce.com
uploadFile 域名
https://up.qbox.me?(根據存儲區域填寫)
downloadFile 域名
https://baldkf.bkt.clouddn.com
存儲區域對應 HTTPS 地址,參考官方文檔
存儲區域
區域代碼
HTTPS 地址
華東
ECN
https://up.qbox.me
華北
NCN
https://up-z1.qbox.me
華南
SCN
https://up-z2.qbox.me
北美
NA
https://up-na0.qbox.me
注意!!目前微信限制每月只能修改三次域名白名單。
安裝
暫時支持一種安裝方式
通過 Github 上的 gpake/qiniu-wxapp-sdk 倉庫獲取
直接克隆倉庫
git clone https://github.com/gpake/qiniu-wxapp-sdk.git
qiniuUploader.js 文件在 sdk 目錄。使用
上傳功能
在需要使用的頁面引用js 文件:
const qiniuUploader = require("../../../utils/qiniuUploader");
在需要使用上傳功能的頁面,開心的使用:
Page({
didPressChooseImage: function() {
var that = this;
// 選擇圖片
wx.chooseImage({
count: 1,
success: function (res) {
var filePath = res.tempFilePaths[0];
// 交給七牛上傳
qiniuUploader.upload(filePath, (res) => {
// 每個文件上傳成功后,處理相關的事情
// 其中 info 是文件上傳成功后,服務端返回的json,形式如
// {
//? ? "hash": "Fh8xVqod2MQ1mocfI4S4KpRL6D98",
//? ? "key": "gogopher.jpg"
//? }
// 參考http://developer.qiniu.com/docs/v6/api/overview/up/response/simple-response.html
that.setData({
'imageURL': res.imageURL,
});
}, (error) => {
console.log('error: ' + error);
}, {
uploadURL: 'https://up.qbox.me',
domain: 'bzkdlkaf.bkt.clouddn.com', // // bucket 域名,下載資源時用到。如果設置,會在 success callback 的 res 參數加上可以直接使用的 ImageURL 字段。否則需要自己拼接
key: 'customFileName.jpg', // 自定義文件 key。如果不設置,默認為使用微信小程序 API 的臨時文件名
// 以下方法三選一即可,優先級為:uptoken > uptokenURL > uptokenFunc
uptoken: 'xxxxxxxxUpToken', // 由其他程序生成七牛 uptoken
uptokenURL: 'UpTokenURL.com/uptoken', // 從指定 url 通過 HTTP GET 獲取 uptoken,返回的格式必須是 json 且包含 uptoken 字段,例如: {"uptoken": "0MLvWPnyy..."}
uptokenFunc: function() {return 'zxxxzaqdf';}
});
}
})
}
});
// domain 為七牛空間(bucket)對應的域名,選擇某個空間后,可通過"空間設置->基本設置->域名設置"查看獲取
// key:通過微信小程序 Api 獲得的圖片文件的 URL 已經是處理過的臨時地址,可以作為唯一文件 key 來使用。
DEMO
請使用微信web開發者工具打開 demo 文件夾,然后配置 index.js 中的相關參數以使用 demo。
API
var options = {
region: 'East', // 是你注冊bucket的時候選擇的區域的代碼
// ECN, SCN, NCN, NA,分別對應七牛的:華東,華南,華北,北美四個區域
// 詳情可以參見「說明」部分的第一條
domain: 'bzkdlkaf.bkt.clouddn.com', // // bucket 域名,下載資源時用到。如果設置,會在 success callback 的 res 參數加上可以直接使用的 ImageURL 字段。否則需要自己拼接
// 以下方法三選一即可,優先級為:uptoken > uptokenURL > uptokenFunc
uptoken: 'xxxxxxxxUpToken', // 由其他程序生成七牛 uptoken
uptokenURL: 'UpTokenURL.com/uptoken', // 從指定 url 通過 HTTP GET 獲取 uptoken,返回的格式必須是 json 且包含 uptoken 字段,例如: {"uptoken": "0MLvWPnyy..."}
uptokenFunc: function() {
// do something to make a uptoken
return 'zxxxzaqdfUpToken';
}
};
qiniuUploder.init(options);
// 如果使用了 init 方法,則 upload 函數的 options 可以省略。如果沒有 init,upload 中也沒有 options 則會報錯。
// 這里的 options 和 init 中的傳入參數一樣,只會修改傳入的參數
// 上傳之前會檢查 uptoken 是否存在
qiniuUploader.upload(wxappFilePath, [succeedCallback, [failedCallback, [options]]]);
// 其中 wxappFilePath,是通過微信小程序官方 API:wx.chooseImage,在 success callback得到 var filePath = res.tempFilePaths[0];
說明
對于存儲空間的存儲區域,創建存儲空間的時候可以選擇。
當前一共有四個區域可以選擇:[華東,華北,華南,北美],對應著不同的服務器地址
如果你不知道在哪里看當前空間的存儲區域,可以登錄七牛后臺,在這個頁面的右下角查看
對于存儲區域和 options 中 region 代碼可以參考這個表格
SDK 依賴 uptoken,可以直接設置?uptoken? 、通過提供 Ajax 請求地址?uptokenURL?或者通過提供一個能夠返回 uptoken 的函數?uptoken_func?實現。
如果沒用設置過uptoken, uptoken_url 兩個參數中必須有一個被設置
如果提供了多個,其優先級為 uptoken > uptoken_url
其中 uptoken 是直接提供上傳憑證,uptoken_url 是提供了獲取上傳憑證的地址
uptoken : '', // uptoken 是上傳憑證,由其他程序生成
uptoken_url: '/uptoken', ? ? ? ? // Ajax 請求 uptoken 的 Url,強烈建議設置(服務端提供)
如果您想了解更多七牛的上傳策略,建議您仔細閱讀?七牛官方文檔-上傳。 七牛的上傳策略是在后端服務指定的。
如果您想了解更多七牛的圖片處理,建議您仔細閱讀?七牛官方文檔-圖片處理
SDK 示例生成 uptotken 時,指定的?Bucket Name?為公開空間,所以可以公開訪問上傳成功后的資源。若您生成 uptoken 時,指定的?Bucket Name?為私有空間,那您還需要在服務端進行額外的處理才能訪問您上傳的資源。具體參見下載憑證。SDK 數據處理部分功能不適用于私有空間。
常見問題
關于上傳文件名
如果在上傳的時候沒有指定文件 key,會使用 wx.chooesImage 得到的tmp filePath作為文件的 key。例如:tmp_xxxxxxx.jpg
設置取消上傳、暫停上傳:
微信小程序上傳 API 暫時無法取消、暫停上傳操作
限制上傳文件的類型:
使用微信小程序 API 只能選到圖片文件。
如果是小程序內產生的文件,那么正常使用即可。
總結
以上是生活随笔為你收集整理的小程序服务器七牛云,基于七牛云 API 开发的微信小程序 SDK的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Css标题中图片居中,图片居中:任意图片
- 下一篇: ajax如何给label赋值,如何让Aj