好久没有更新推文了,这段时间也是在做一个小项目,一开始想的是人脸识别并上传视频到七牛云的,但是后来想想好像不用这个功能,但是我实现后才知道。所以就写一下上传的功能吧。

前言

大家都知道七牛云就是一个线上的云存储空间,可以上传一些图片、视频等多媒体资源,对于小型项目来说是很方便的。但是好像他的存储空间1个月就会过期,你的资源可能访问不了(充钱)。

偶然接触这个功能是因为在做小程序的过程中,录制的视频不能转码成base64格式的(真机调试模式),开发者工具调试是正常的,真机调试就会不正常。

我发现在工具调试下生成的是以http开头的文件,真机的时候就会生成wxfile的文件,一度怀疑是这个问题导致我不能转base64,后来多方求证之后发现,根本不用关心什么开头,预览是正常的。

「这个问题仅存在真机调试的模式下面【谨记】」

准备工作

首先我们要先去七牛云注册一个开发者账号,相信大家都会。

接下来我们就可以上传我们的文件了。但是官方写的太难懂了,以至于我连文档都看得不太清楚。经过自己的一番折磨着没有搞清楚这个uptoken是怎么获取的,不像其他的三方工具一样简便,直接是他们生成的。

没办法,我找了几篇文章讲关于上传凭证的生成方式也没有搞明白。后来我就在一个github里边找到了小程序的SDK,但是也有不少的问题。

找对文档

我觉得这个文档隐藏的还是很不错的,找了半天没有找到。

拿到小程序的SDK之后我们就可以在用的地方进行JS文件的引入,在上面的链接里面,找到Qiniu-wxapp-SDK之后点击安装,文件就会下载到我们的本地。

在我们的小程序页面,你要使用的这个页面进行进入即可。

var qiniuUploader = require("../../qiniuUploader.js")

项目配置

如果是一开始弄的时候,我相信很多人都会来到Qiniu-wxapp-SDK的github文档那里寻找,但是那里也没有找到关于凭证的生成方式。

后来我在获取凭证的详情页面找到了,但是这个凭证为了安全是由后端返回的,前端只需要调用api/uptoken的形式就可以获取。所以,唯一的办法就是我们需要把这个获取凭证的接口放上服务器,让公网是可以访问的。

在上面这个运行实例下载之后,其实我们唯一要用到的就是server.js文件和一个配置文件config.json文件。

server.js

var qiniu = require("qiniu"); var express = require("express"); var path = require("path") var app = express(); app.use(express.static(__dirname + "/")); var multiparty = require("multiparty"); var fs=require('fs'); var config=JSON.parse(fs.readFileSync(path.resolve(__dirname,"config.json"))); ......

看一下这个文件的关键代码,里面用到了express、qiniu、multiparty这三个依赖,那么这样一来就很简单了,初始化一个package.json文件安装依赖即可。

config.json

{ "AccessKey": "你的AccessKey", "SecretKey": "你的SecretKey", "Bucket": "空间名称", "Port": 9000, "UptokenUrl": "uptoken", "Domain": "你的域名" }

文件很简单,就是做一些你的七牛云空间的信息配置,为了能够上传资源到你指定的空间。

AccessKey/SecretKey:在你的个人中心里面,进去密钥管理就可以看到了,但是不要泄露出去就好。把这两个信息填写到config.json里面去。

AccessKey/SecretKey

Bucket:就是你创建的空间名称,可以在对象存储的空间管理进行新建空间,这个名字就是Bucket。

domain

domain:你的临时测试域名

获取uptoken

明确了uptoken是由后端生成的之后,我们就把上面的server.js文件部署上去。这个文件其实就是接口文件,用于提供uptoken。

目录

上传服务器之后记得安装依赖,然后用pm2进行启动。这样你就可以在关闭服务器终端的时候还可以正常访问接口。用node启动你关闭终端就没用了。

看一下是否启动成功

接下来我们就开始我们的uptoken获取吧,在浏览器输入你的服务器IP:端口/api/uptoken

获取成功

上传文件

接下来就是视频上传的时候,在小程序onload的时候就初始化函数。

var qiniuUploader = require("../../qiniuUploader.js");//记得引入 initQiniu() { var options = { region: 'NCN', // 华北区(看你空间的地区) uptokenURL: 'https://yourserver.com/api/uptoken',//上面的获取uptoken链接 uploadURL:'https://up-z2.qbox.me',//上传的地址 domain: '测试域名/' }; qiniuUploader.init(options); }

关于uploadURL的地址:其实运行实例的文件(demo01)是没有这一项的配置的,但是我运行就会说uploadURL没有配置,那我只好写上去了。

case 'ECN': uploadURL = 'https://up.qbox.me'; break; case 'NCN': uploadURL = 'https://up-z1.qbox.me'; break; case 'SCN': uploadURL = 'https://up-z2.qbox.me'; break; case 'NA': uploadURL = 'https://up-na0.qbox.me'; break;

看自己的地区来写。

最后就是上传了。

// 交给七牛上传 qiniuUploader.upload(filePath, (res) => { console.log(res);//它会返回一个在线地址,打开浏览器就可以访问你的视频、音频/图片 }, (error) => { console.error('error: ' + JSON.stringify(error)); });

这里的filePath就是你录制视频、音频/图片的地址,如果是手机的话是wxfile开头,电脑调试就是http开头,不过没关系,都可以上传到七牛云。

小结

经过一番的折腾,其实一开始我们的思路应该是比较多的,网上的文章也是很多。但是不幸的是都没有解决我的问题。

在这里我就想说一句话,假如你在开发微信小程序,任何时候你都要以你预览的时候为准。因为很多时候不是你的项目代码写得有问题,而是开发者工具的问题,一个是电脑的路径一个是手机的路径,它们是不一样的。

在我真机调试的时候,怎么也不能执行wx.getFileSystemManager()里面的函数。在真机调试的时候页面右方一直报警告和错误,然后自动恢复调试然后又错误,它确实也不是报错信息。

php小程序上传视频到七牛,小程序上传视频到七牛云的实践相关推荐

  1. 使用七牛的sdk上传报错:incorrect region

    报错响应大致如下 exception:None, status_code:404, _ResponseInfo__response:<Response [404]>, text_body: ...

  2. 使用百度webuploader上传组件直接上传到七牛云表单上传

    上一节我们已经讲过了使用表单上传,这一节我们来讲一下使用webuploader来进行异步上传到七牛云服务器. 点击查看,七牛云表单上传 1.引入webuploader的js和样式表 2.写js代码 其 ...

  3. php小程序上传视频到七牛,小程序上传视频到七牛云

    下载完之后引入到小程序里面: const qiniuUploader = require("../../utils/qiniuUploader"); 上传到七牛云需要七牛云的tok ...

  4. 七牛云 转码_七牛云存储 - 七牛 php sdk 上传 转码 问题

    实在是不会用 sdk 呀 都蒙圈了 求大神 指点 vendor('Qiniu.io'); vendor('Qiniu.rs'); $bucket = 'icunzai-voice'; $key = $ ...

  5. android七牛多张图片上传

    将多张图片上传到七牛,需要一张张上传 七牛android SDK使用指南http://developer.qiniu.com/code/v7/sdk/android.html 将图片上传到七牛服务器的 ...

  6. php大图片接口上传慢,七牛php sdk上传文件太慢

    问题描述 上传同一个文件(32kb)有时候需要2s,但有时候需要11s,上传速度太不稳定,且太慢. 上传的过程是由前端上传文件到后端php(使用yii2框架)的接口,由php调qiniu的sdk上传方 ...

  7. elementui 上传七牛_用element ui上传图片到七牛踩过的坑

    前端上传图片到七牛云的流程 请求后端接口获取上传凭证 请求七牛云地址上传图片到七牛云 上传完毕将获得七牛云返回的图片地址 七牛云地址 说到七牛云地址,奴家真的是一把鼻涕一把泪 刚开始做图片上传的时候, ...

  8. mysql备份七牛云存储_定时备份 Mysql并上传到七牛的方法

    多数应用场景下,我们需要对重要数据进行备份.并放置到一个安全的地方,以备不时之需. 常见的 MySQL 数据备份方式有,直接打包复制对应的数据库或表文件(物理备份).mysqldump 全量逻辑备份. ...

  9. php使用七牛直播,七牛上传文件,PHP版本

    自从知道七牛以来,就一直在用七牛做图片外链,但是每次需要到七牛官网登录,然后再上传图片.感觉很麻烦,最近想做一个自己的上传到七牛的平台,开始的想法是用C#写一个windows客户端,在用swift写一 ...

最新文章

  1. ABS是啥,为什么区块链可以与它完美结合?
  2. 习题4-1 求奇数和 (15 分)
  3. 把windows一个目录mount到Ubuntu下,非root用户没有写权限
  4. js 获取电脑 硬盘序列号_来将何人报上名来!解密电脑是如何识别硬盘的
  5. C++ Vector用法深入剖析
  6. ubuntu 12.04 LTS 64位兼容运行32位程序
  7. gcc-5.4.0 static dwarf2 compile
  8. 6 个前端开发必备工具,提高你的生产力
  9. tiny4412 linux+qtopia nfs网络文件系统的挂载
  10. idea 编译Java heap space 内存溢出
  11. 华为云ModelArts 2.0全面升级,革新传统AI开发模式
  12. 3.2 Tensorflow基础运算
  13. 加州理工学院公开课:机器学习与数据挖掘_神经网络
  14. jquery 3D旋转banner图效果 demo
  15. [树状数组模板] 洛谷P3368
  16. 2:人民币与美元汇率兑换程序
  17. 【C语言】C语言的三种基本控制结构-顺序、选择、循环
  18. 学渣的刷题之旅 leetcode刷题 67.二进制求和
  19. [Ant][StartWithAnt] 第七章 Ant扩展包ant-contrib的使用
  20. [PHP] 2018年终总结

热门文章

  1. 北京市怀柔区谷歌卫星地图下载
  2. 腾讯位置服务JSAPI GL实现文本标记的碰撞避让
  3. Vue.js(菜鸟自学)
  4. Bootstrap入门与简述
  5. html css画流程图,css canvas 绘制流程图(1)
  6. 什么是线程池以及线程池的好处
  7. LwM2M与MQTT的区别是什么?哪个更适合IoT
  8. 螺旋测微器b类不确定度_物理实验直测量不确定度评估.ppt
  9. 【Python】turtle库的风轮绘制、蟒蛇绘制、八角形绘制、叠边形绘制
  10. win10 英文版安装步骤