peterhuang007/weixinFileToaliyun: 微信小程序存放视频文件到阿里云用到算法js脚本文件 https://github.com/peterhuang007/weixinFileToaliyun
 
 
 
require('./crypto/hmac.js');
require('./crypto/sha1.js');
const env = require('./config.js');
const Base64 = require('./Base64.js');
const Crypto = require('./crypto/crypto.js');
// const uploadFile = function (filePath, fileW, objectId, successCB, errorCB) {
const uploadFile = function(aliyunLogicDir, filePath, successCB, errorCB) {
// const uploadFile = function (aliyunLogicDir,filePath) {
console.log(filePath)
if (!filePath || filePath.length < 9) {
wx.showModal({
title: '视频错误',
content: '请重试',
showCancel: false,
})
return;
}
console.log('上传视频…');
//const aliyunFileKey = fileW+filePath.replace('wxfile://', ''); const aliyunFileKey = aliyunLogicDir + filePath.split("/")[filePath.split("/").length - 1];
console.log(aliyunFileKey);
const aliyunServerURL = env.aliyunServerURL;
const OSSAccessKeyId = env.OSSAccessKeyId;
const policyBase64 = getPolicyBase64();
const signature = getSignature(policyBase64);
console.log('aliyunFileKey=', aliyunFileKey);
wx.uploadFile({
url: aliyunServerURL, //仅为示例,非真实的接口地址
filePath: filePath,
name: 'file',
formData: {
'key': aliyunFileKey,
'OSSAccessKeyId': OSSAccessKeyId,
'policy': policyBase64,
'Signature': signature,
'success_action_status': '200',
},
success: function(res) {
console.log(res)
if (res.statusCode != 200) {
errorCB(new Error('上传错误:' + JSON.stringify(res)))
return;
}
console.log('上传视频成功', res)
successCB(aliyunFileKey);
},
fail: function(err) {
console.log(err) err.wxaddinfo = aliyunServerURL;
errorCB(err);
},
})
} const getPolicyBase64 = function() {
let date = new Date();
date.setHours(date.getHours() + env.timeout);
let srcT = date.toISOString();
const policyText = {
"expiration": srcT, //设置该Policy的失效时间,超过这个失效时间之后,就没有办法通过这个policy上传文件了 指定了Post请求必须发生在2020年01月01日12点之前("2020-01-01T12:00:00.000Z")。
"conditions": [
["content-length-range", 0, 20 * 1024 * 1024] // 设置上传文件的大小限制,1048576000=1000mb
]
}; const policyBase64 = Base64.encode(JSON.stringify(policyText));
return policyBase64;
} const getSignature = function(policyBase64) {
const accesskey = env.AccessKeySecret; const bytes = Crypto.HMAC(Crypto.SHA1, policyBase64, accesskey, {
asBytes: true
});
const signature = Crypto.util.bytesToBase64(bytes); return signature;
} module.exports = uploadFile;
const uploadImage = require('../../utils/uploadAliyun.js');
var gd = getApp().globalData;
var imgUrlApp = gd.imgUrlApp;
var localImgPath = gd.localImgPath;
var apiUrlApp = gd.apiUrlApp;
var searchInput = "";
Page({
data: {
apiUrlApp: apiUrlApp,
imgUrlApp: imgUrlApp,
localImgPath: localImgPath,
navbar: ['tab0', 'tab1', 'tab2'],
currentTab: 0,
},
//响应点击导航栏
navbarTap: function (e) {
var idx = e.currentTarget.dataset.idx
this.setData({
currentTab: idx,
TypeItem: this.data.navbar[this.data.currentTab],
})
switch (idx) {
case 0:
this.pubBK();
break;
case 1:
this.myBKItemList();
break;
case 2:
default:
this.myBKDetailList();
break;
}
}, upLoad: function (e) {
wx.chooseVideo({
success: function (res) {
console.log(res)
var tempFilePath = res.tempFilePath
console.log(tempFilePath)
uploadImage("logicDir/video/" + wx.getStorageSync("username") + "/", tempFilePath, function () {
console.log('ok')
}, function () {
console.log('NOTok')
})
}
});
},
onLoad: function (options) { }, /**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {
var that = this;
wx.getSystemInfo({
success: function (res) {
that.setData({
//动态根据手机分辨率来计算内容的高度(屏幕总高度-顶部筛选栏的高度)
contentHeight: (res.windowHeight - 72 * res.screenWidth / 750)
});
}
})
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () { }, /**
* 生命周期函数--监听页面隐藏
*/
onHide: function () { }, /**
* 生命周期函数--监听页面卸载
*/
onUnload: function () { }, /**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () { }, /**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () { }, /**
* 用户点击右上角分享
*/
onShareAppMessage: function () { }, onShow: function () {
// 页面显示
},
onHide: function () {
// 页面隐藏
},
onUnload: function () {
// 页面关闭
}, })

  

 

 
 
 
 
<view>
<image bindtap="upLoad" mode="aspectFit" src="{{localImgPath}}icon-plus-16.svg"></image>
</view>

  

 
 
 
 
 
 
 
 

微信小程序存放视频文件到阿里云用到算法js脚本文件的更多相关文章

  1. 微信小程序中图片上传阿里云Oss

    本人今年6月份毕业,最近刚在上海一家小公司实习,做微信小程序开发.最近工作遇到一个小问题. 微信小程序图片上传阿里云服务器Oss也折腾了蛮久才解决的,所以特意去记录一下. 第一步:配置阿里云地址: 我 ...

  2. 微信小程序 - 使用字体图标(阿里云库)

    实现 阿里图库:https://www.iconfont.cn/ CSS3:[attribute*=value] 选择器 步骤 1. 加入购物车 2. 下载代码解压,复制iconfont.css ap ...

  3. 腾讯技术分享:微信小程序音视频与WebRTC互通的技术思路和实践

    1.概述 本文来自腾讯视频云终端技术总监rexchang(常青)技术分享,内容分别介绍了微信小程序视音视频和WebRTC的技术特征.差异等,并针对两者的技术差异分享和总结了微信小程序视音视频和WebR ...

  4. 腾讯技术分享:微信小程序音视频技术背后的故事

    1.引言 微信小程序自2017年1月9日正式对外公布以来,越来越受到关注和重视,小程序上的各种技术体验也越来越丰富.而音视频作为高速移动网络时代下增长最快的应用形式之一,在微信小程序中也当然不能错过. ...

  5. 微信小程序中视频的显示与隐藏

    在微信小程序中实现视频的播放与暂停 需求: 视频列表中只能有一个视频在播放 点击视频实现播放与暂停功能 加载完成显示图片,点击后变为视频播放 从上次播放的位置进行播放 思路: 定义一个标记变量,控制视 ...

  6. “取件帮”微信小程序宣传视频链接及内容介绍

    1.视频链接 视频上传至优酷自频道,地址链接:http://v.youku.com/v_show/id_XMzg2NTM3OTc5Ng==.html?spm=a2hzp.8253869.0.0 2.视 ...

  7. 微信小程序入门从这里出发(登录注册、开发工具、文件及结构介绍)

    (一) 准备工作 (1) 登录注册 注册账号:这就不谈了,只需要注意使用一个全新的邮箱,别之前注册过公众号小程序等就可以了 https://mp.weixin.qq.com/wxopen/waregi ...

  8. 微信小程序又一爆炸功能上线-云开发

    云开发介绍 开发者可以使用云开发开发微信小程序.小游戏,无需搭建服务器,即可使用云端能力. 云开发为开发者提供完整的云端支持,弱化后端和运维概念,无需搭建服务器,使用平台提供的 API 进行核心业务开 ...

  9. 微信小程序开发平台新功能「云开发」快速上手体验

    微信小程序开发平台刚刚开放了一个全新的功能:云开发. 简单地说就是将开发人员搭建微信小程序后端的成本再次降低,此文刚好在此产品公测时,来快速上手看看都有哪些方便开发者的功能更新. 微信小程序一直保持一 ...

随机推荐

  1. SPOJ-COLONY - Linearian Colony!简单二分思想

    COLONY - Linearian Colony 一道很水的题却坑我两天!在CF上做过类似的题,用递归可以找到答案,但感觉不会这么麻烦,于是看看有没有什么规律,对Y分奇偶貌似可以找到规律,但WA了三 ...

  2. UOJ 274 【清华集训2016】温暖会指引我们前行 ——Link-Cut Tree

    魔法森林高清重置, 只需要维护关于t的最大生成树,然后链上边权求和即可. 直接上LCT 调了将近2h 吃枣药丸 #include <cstdio> #include <cstring ...

  3. BZOJ 3856: Monster【杂题】

    Description Teacher Mai has a kingdom. A monster has invaded this kingdom, and Teacher Mai wants to ...

  4. 算法复习——求最长不下降序列长度(dp算法)

    题目: 题目背景 161114-练习-DAY1-AHSDFZ T2 题目描述 有 N 辆列车,标记为 1,2,3,…,N.它们按照一定的次序进站,站台共有 K 个轨道,轨道遵从先进先出的原则.列车进入 ...

  5. SHoj A序列

    A序列 发布时间: 2017年7月9日 18:17   最后更新: 2017年7月9日 21:05   时间限制: 1000ms   内存限制: 128M 描述 如果一个序列有奇数个正整数组成,不妨令 ...

  6. h5表单验证的css和js方法

    1.css3 提示只适用于高级浏览器: Chrome,Firefox,Safari,IE9+ valid.invalid.required的定义 代码如下: input:required, input ...

  7. Python入门---易错已错易混淆----知识点

    1.not 1 or 0 and 1 or 3 and 4 or 5 and 6 or 7 and 8 and 9 结果会输出啥? 根据优先级:(not 1) or (0 and 1) or (3 a ...

  8. mongo安装-docker

    拉取官方镜像(可以自己使用dockerFile构建): docker search mongo //查询Docker Hub 上的mongo镜像 docker pull mongo // 拉取官方镜像 ...

  9. Adobe Premiere Pro导入插件开发遇到的一个问题

    最近在更新公司一款Premiere Pro CC导入插件的时候,遇到了一个神奇的现象.具体的现象是这样的:我们的插件需要将一些私有的文件数据放到插件中,比如说当前活动的文件名.当插件中收到不同的sel ...

  10. CAN 和 CANopen的区别和联系

    1.CAN与CANopen的共同点与不同点:  CAN只定义了物理层与链路层,而没有定义用户层,用户可根据自己的需要定义一些网络上的通信约定:  CANopen是在CAN的基础上定义了用户层,即规定了 ...