概述 Qiniu-wxapp-SDK 是七牛云在小程序上的实现,网络功能依赖于微信小程序 API。您可以基于 SDK 方便的在小程序中上传文件至七牛云。 Qiniu-wxapp-SDK 为客户端 SDK,没有包含 token 生成实现
概述Qiniu-wxapp-SDK 是七牛云在小程序上的实现,网络功能依赖于微信小程序 API。您可以基于 SDK 方便的在小程序中上传文件至七牛云。 Qiniu-wxapp-SDK 为客户端 SDK,没有包含 token 生成实现,为了安全,token 建议通过网络从服务端获取,具体生成代码可以参考以下服务端 SDK 的文档。SDK Demo中暂时没有包含这部分。
其他功能在开发中,敬请期待。准备
后端服务应提供一个 URL 地址,供小程序请求该地址后获得 uptoken。请求成功后,服务端应返回如下格式的 json(至少包含 uptoken 字段):
{
"uptoken": "0MLvWPnyya1WtPnXFy9KLyGHyFPNdZceomL..."
}
根据你创建的七牛存储空间,把对应的 https 上传地址添加到小程序的访问白名单中,方法如下:
存储区域对应 HTTPS 地址,参考官方文档
注意!!目前微信限制每月只能修改三次域名白名单。 暂时支持一种安装方式
直接克隆仓库 git clone https://github.com/gpake/qiniu-wxapp-sdk.git
qiniuUploader.js 文件在 sdk 目录。使用
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。
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];
说明
|
