zoukankan      html  css  js  c++  java
  • 微信小程序存放视频文件到阿里云用到算法js脚本文件

      
     
     
    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>
    

      

     
     
     
     
     
     
     
     
     
  • 相关阅读:
    idea修改代码没法实时编译终极解决方案
    linux 安装 hadoop
    linux克隆虚拟机后需要修改的点
    多线程第一篇
    windows搭建ftp环境
    第8章PostGIS参考
    postgis 简单应用
    linux 安装postgresql
    复杂度分析(下)
    复杂度分析(上)
  • 原文地址:https://www.cnblogs.com/rsapaper/p/9347126.html
Copyright © 2011-2022 走看看