概述

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相关推荐

  1. node mysql商城开发_NideShop:基于Node.js+MySQL开发的微信小程序商城开源啦

    NideShop:基于Node.js+MySQL开发的微信小程序商城开源啦 发布时间:2020-04-14 04:23:37 来源:51CTO 阅读:2894 作者:ch10mmt 高仿网易严选的微信 ...

  2. 多多小程序(doodoo)发布1.0,基于node,vue开发的微信小程序系统

    多多小程序(doodoo)发布1.0,基于Doodoo.js -- 中文最佳实践Node.js Web快速开发框架,支持Koa.js, Express.js中间件.包含多项功能改进,及Bug修复. 更 ...

  3. python搭建微信小程序卖货要收费用吗_开发一个微信小程序需要多少钱?

    很多朋友在微信上都在问司瓦图老张[也就是我本人,下面简称老张]关于小程序商城的开发费用,今天老张跟朋友分享下,开发一个微信电商小程序商城到底需要多少钱? //有的朋友关心为什么小程序费用有几百,几千差 ...

  4. python搭建微信小程序卖货要收费用吗_开发一个微信小程序要多少钱?小程序是怎么收费的? - 搜外问答...

    一.微信小程序的配套组成部分 1>域名 提供域名注册的有很多注册商,目前阿里云里面的价格是55-130元不等,注意这是按年缴费的. 2>SSL域名证书 平时我们打开的网址都是http开头的 ...

  5. 秒杀小程序 php后台,基于ThinkPhp6.0+Vue 开发实现微信小程序、公众号、商城、拼团、秒杀、后台管理等功能...

    介绍 1.后台应用form-builder PHP快速生成现代化表单: 2.前端以VueCLI框架 + nodejs打包: 3.PHPExcel数据导出,导出表格更加美观,可视: 4.EasyWeCh ...

  6. 基于olami开放语义平台的微信小程序遥知之源码实现

    概述 实现一个智能生活信息查询的小秘书功能,支持查天气.新闻.日历.汇率.笑话.故事.百科.诗词.邮编.区号.菜谱.股票.节目预告,还支持闲聊.算24点.数学计算.单位换算.购物.搜索等功能. 使用方 ...

  7. 基于云开发的微信小程序:个人相册ByUestcXiye

    基于云开发的微信小程序:个人相册ByUestcXiye 作业要求 第一次作业 第二次作业 结课作业 小程序开发入门 开发前的准备 注册微信小程序 新建一个模板小程序 开通云开发服务 第一次作业 参考资 ...

  8. 基于Python Django框架后端的微信小程序开发

    刚做完一个股票信息服务类的微信小程序(小程序名字"博股论基",大家有兴趣可以搜一下),也有一些心得,在这里记录一下开发过程,算是个开发笔记,同时也希望能给需要的同学一些帮助. -- ...

  9. 基于ESP32的智能家居控制系统-微信小程序

    一. 课题研究意义.现状及应用分析 1.1课题研究意义及现状 目前,科学技术发展十分迅速,其渗透到各行各业以及生活的方方面面,室内设计和高科技结合便出现了"智能家居".所谓智能家居 ...

最新文章

  1. 学习Python(一)
  2. css怎么把横向菜单变纵向_压力容器钢板力学性能试验,横向取样的规定放松了?...
  3. ie浏览器修复_继IE之后,微软要彻底放弃它们了...
  4. Java实现算法导论中Rabin-Karp字符串匹配算法
  5. redis在php中的用法,使用PHP-redis操作Redis
  6. linux下mysql安装
  7. [js] 对`a == (‘1‘||‘2‘||‘3‘) ? false : true`写法进行改进,写出你优化后的方法
  8. 数据库“意外失联”?华为云DRS异地多活灾备为您支招
  9. JS ||(或运算)详解
  10. c语言程序设计单元小测,C语言程序设计单元小测2.doc
  11. 23种设计模式(十五)接口隔离之适配器
  12. 核磁谱图分析步骤_微谱技术:想要涂料开发,少不了仪器分析……
  13. 企业网站建设要点和推广方法有哪些?
  14. vue 怎么修改 confirm 的文字样式和颜色
  15. python pipe_Python os.pipe()用法及代码示例
  16. Axure RP使用技巧分享 快速提升效率
  17. web的首屏加载优化
  18. uni-app运行在手机或模拟器上(使用雷电模拟器)
  19. QList添加自定义结构体
  20. princeton 本科cos318操作系统教程-1引言

热门文章

  1. c++ mysql 存储图片路径_3.用ADO实现图片在数据库中存储
  2. c语言题-牛牛做水题
  3. jsp复选框追少选择一个否则不能提交_Filecoin的惩罚机制/至联云IPFS:选择无良矿商,你的抵押币就回不来了...
  4. 每日程序C语言46-函数之间的调用
  5. c语言斐波那契数列_视频丨神奇的斐波那契数列科学性与艺术性
  6. 2013年完美世界校园招聘笔试题
  7. python7.1处理异常
  8. 这份书单,给那些想学Hadoop大数据、人工智能的人
  9. 自由群,外代数和泛包络代数
  10. 如何把微信文章中的语音/音乐下载下来