自己定期有听BBC六分钟英语的习惯。但BBC六分钟官网由于大家都了解的缘故,不能直接访问。也不想装别的APP,就想着何不自己做个小程序?

二、

想到就做。做为一个方便自己的小程序,不需要很复杂的架构。

闲置的DigitalOcean服务器下载音频和对话脚本,传回国内COS。最后用小程序展示就好了。

从写抓取脚本和小程序制作上线花了大概一天的时间。上线后发了几个微信群,引来了100多个用户。也反馈了一些问题,最多的就是加载慢。。

虽然只为自己兴趣制作的,那既然引来了用户。咱也不是乔布斯,不能不听用户的反馈。没什么说的上CDN。

三、

上完CDN,速度有了。也就没再去管了,之后就一直在佛系运营。

直到17号开发者社区推送了一条消息:可以外网上传文件到云存储了!

https://developers.weixin.qq.com/miniprogram/dev/wxcloud/reference-http-api/index.html

说实话,之前也考虑过小程序里的云存储,但好像只能通过开发者工具人工上传。。 这很不极客。

所以收到这条推送之后第一时间就去看了文档,理了一遍小程序云存储上传逻辑是:

step1: 用小程序Appid 和Appsecret 拿 Access_token

step2: 用拿到的Access_token拿文件上传URL和相关参数

step3: 用拿到的URL和相关参数拼接完整的POST请求来上传文件

四、

理顺了逻辑,接下来就是码代码了。

Python用来http请求的,选用requests,相信没人挑错的。

首先:拿access_token

def get_token():    token_url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + ID + "&secret=" + SECRET    try:        token = requests.get(token_url)        token = token.json()        return token["access_token"]    except Exception as e:        logging.error(e)

然后,用access_token获取文件上传相关参数

def get_upload_url(token, env, path):    post_url = "https://api.weixin.qq.com/tcb/uploadfile?access_token=" + token    playload = json.dumps({"env":env, "path":path})    try:        upload = requests.post(post_url, data=playload)        return upload.json()    except Exception as e:        logging.error(e)

拿到参数后需要解析重新拼接来完成上传:

def parse_form(res):    form = {}        form["key"] = res["url"].split("/")[-1]    form["Signature"] = res["authorization"]    form["x-cos-security-token"] = res["token"]    form["x-cos-meta-fileid"] = res["cos_file_id"]    return (form, res["url"])

最后,就是上传了:

def upload(res, file):        form = res[0]    upload_url = res[1]    with open(file, "rb") as f:        form["file"] = f.read()            try:        success = requests.post(upload_url, files=form)    except Exception as e:        logging.error(e)

完整源码可以添加个人微信 iKeepLearn 获取

结语、

作为一个小小的小程序,腾讯提供的云开发资源还是能满足的。

存储上传次数由 2 万/天调整为 60 万/月存储下载次数由 5 万/天调整为150 万/月去除数据库 QPS 限制数据库单集合索引调整为系统参数限制,由原有 10 个调整为 20 个云函数数量调整为系统参数限制,由原有 20 个调整为 50 个增加数据库流量说明,单次出包大小为 16 M

至于超出了给的配额怎么办?直接上社区官方人员的回复好了。

最后放上自己做的小程序,6minute 同步更新BBC Learning English。

python requests 上传文件_Python 实现小程序云存储文件上传相关推荐

  1. 小程序云开发上传及使用图片

    推荐一个不错的学习资料库 小程序云开发上传及使用图片 .wxml <view class="img-view"><view class="show&qu ...

  2. 微信小程序-云开发上传文件、图片

    文章目录 一.前言 二.功能简介 1.选择微信聊天记录中的文件 2.选择本地相册/拍照图片 3.上传功能 三.实现代码 1.选择聊天文件函数(js) 2.选择相册函数(js) 3.上传文件函数(js) ...

  3. php微信小程序多图上传,tp5实现微信小程序多图片上传到服务器功能

    最近在做一个教育类的小商城的微信小程序,用到了上传多个图片文件到服务器端,这里做一个讲解,希望对大家有所帮助. 1,小程序端: 在wxml文件中: 删除 点击上传作业 在js文件中: Page({ / ...

  4. 小程序云开发之上传数据到数据库

    首先我们要在云开发控制台中新建一个名为 Room 的表 然后我们要在上传页面的js文件中进行初始化` const db = wx.cloud.database().collection('Room') ...

  5. 微信小程序 云开发 上传多张图片 9宫格

    直接看录屏(有语音说明) 微信小程序开发 如果播放失败请 点击此处跳转腾讯视频 show me the code <view class="img-view">< ...

  6. 微信小程序云开发上传word文档到云存储器

    微信程序直接选择上传文件时跳转手机的文件管理往往看到这样的画面 这对于大部分用户是很不友好的,经常找不到用户想要上传的文档 我所使用的是利用微信自带的两个api实现文件选择和上传,话不多说直接上选择文 ...

  7. 微信小程序云开发上传数据到云数据库

    实现功能:实现对数组数据的动态更改,并能通过for循环,上传一整组数据到云数据库 代码: 1.wxml代码 <view ><view>运动症状</view> < ...

  8. 微信开发上传视频到服务器,微信小程序中实现上传视频的开发代码

    微信小程序中实现上传视频的开发代码,视频,接口,上传,代码,服务器 微信小程序中实现上传视频的开发代码 易采站长站,站长之家为您整理了微信小程序中实现上传视频的开发代码的相关内容. 本篇文章给大家带来 ...

  9. mysql批量导入json_微信小程序云开发---数据库批量导入json文件

    马上大学毕业了,于是最近做了一个关于班级信息的微信小程序,主要记录一些班级活动的照片.同学的通讯录...... 主要使用了微信小程序的云开发平台,因为班级同学的信息,班长都会有Excel表格统计的信息 ...

  10. 微信小程序云开发---数据库批量导入json文件

    马上大学毕业了,于是最近做了一个关于班级信息的微信小程序,主要记录一些班级活动的照片.同学的通讯录...... 主要使用了微信小程序的云开发平台,因为班级同学的信息,班长都会有Excel表格统计的信息 ...

最新文章

  1. VMware ubuntu 虚拟机只剩下lo回环网卡,上不了网(无法上网、无法连接网络)(环回)
  2. hive和hbase区别和联系
  3. java 静态块的作用域_java 学习笔记(一)
  4. vue 初始化方法_Vue源码解读(一)引入Vue做了什么
  5. php定义一个名为Vehicles,php的扩展和嵌入--c++类的扩展开发
  6. Spring Boot 自动配置原理
  7. 进击吧! Blazor !第二期 回顾
  8. 40岁的程序员还能找到工作吗_学会了Vue就能找到前端工作吗
  9. GitHub优秀移动开源项目大集合
  10. 智能戒指,一个新鲜智能穿戴产物
  11. 贝莱德砸10亿美元买下指数定制公司,释放什么信号?
  12. 剑指Offer_16_合并两个排序的链表
  13. 银行学生助学贷款管理系统免费PPT模板
  14. 有关产品项目管理的ISO/IEC/IEEE标准
  15. 四、OSPF配置实验
  16. python3.0编程软件_震惊!国内已知第一款Scratch 3.0编程软件KittenBlock推出Python编程功能!...
  17. 诺顿杀毒软件22010最新注册码
  18. 大M法的介绍以及建模过程中if else的实现
  19. 一种点到特定高维平面的距离的优化算法
  20. 这世上没有末路,你从不曾孤独

热门文章

  1. Windows Server 2008 R2从低版本升级到高版本
  2. 46. 避免 CSS 表达式(7)
  3. 14. 税收规则(Tax Rules)
  4. 8. Document getElementById() 方法
  5. [2019杭电多校第三场][hdu6608]Fansblog
  6. [JSOI2012]玄武密码 题解(AC自动机)
  7. Python类方法,静态方法
  8. vim创建程序文件自动添加头部注释/自动文件头注释与模板定义
  9. js动态计算移动端rem
  10. 在javascript中NodeList和Array的区别及转换方法