小程序获取token php七牛,小程序直接上传七牛云并在本地生成token

本文档详细介绍了如何使用JavaScript实现七牛云上传模块,包括获取上传凭证、初始化配置、时间格式化、唯一ID生成等关键步骤。通过调用getQiniuToken获取加密的七牛云token,利用initQiniu初始化上传配置,确保上传过程的安全与高效。
摘要由CSDN通过智能技术生成

const qiniuUploader = require("./qiniuUploader");

const Buffer = require('./buffer.js');

const CryptoJS = require('./hmac-sha1.js');

const base64 = require('./enc-base64.js');

const formatTime = date => {

const year = date.getFullYear()

const month = date.getMonth() + 1

const day = date.getDate()

const hour = date.getHours()

const minute = date.getMinutes()

const second = date.getSeconds()

return [year, month, day].map(formatNumber).join('/') + ' ' + [hour, minute, second].map(formatNumber).join(':')

}

const formatNumber = n => {

n = n.toString()

return n[1] ? n : '0' + n

}

const base64ToUrlSafe = (v) => {

return v.replace(/\//g, '_').replace(/\+/g, '-');

}

/**

*

* @param {opt.ak 七牛云 ak opt.sk 七牛云 sk opt.bkt七牛云的命名空间}} opt

*/

const getQiniuToken = (opt) => {

var accessKey = opt.ak;

var secretkey = opt.sk;

var bucket = opt.bkt;

var strdata = {

"scope": bucket,//空间域名

"deadline": Date.parse(new Date()) + 360000 //当前时间截

}

wx.setStorageSync('tokentime', strdata.deadline)

var str = JSON.stringify(strdata);

var encoded = Buffer.from(str).toString('base64');

var encodedStr = base64ToUrlSafe(encoded);

//HmacSHA1加密

var sign = CryptoJS.HmacSHA1(encodedStr, secretkey);

var cod = base64.stringify(sign)

var encodedSign = base64ToUrlSafe(cod);

var token = accessKey + ':' + encodedSign + ':' + encodedStr;

console.log('token', token)

return token;

}

/**

* 初始化七牛云相关配置

* @param {}} token 七牛的加密token

*/

const initQiniu = (token) => {

var options = {

// bucket所在区域,这里是华北区。ECN, SCN, NCN, NA, ASG,分别对应七牛云的:华东,华南,华北,北美,新加坡 5 个区域

region: 'ECN',

// 获取uptoken方法三选一即可,执行优先级为:uptoken > uptokenURL > uptokenFunc。三选一,剩下两个置空。推荐使用uptokenURL,详情请见 README.md

// 由其他程序生成七牛云uptoken,然后直接写入uptoken

uptoken: token,

// 从指定 url 通过 HTTP GET 获取 uptoken,返回的格式必须是 json 且包含 uptoken 字段,例如: {"uptoken": "0MLvWPnyy..."}

// uptokenURL: 'https://[yourserver.com]/api/uptoken',

// uptokenFunc 这个属性的值可以是一个用来生成uptoken的函数,详情请见 README.md

// uptokenFunc: function () { },

// bucket 外链域名,下载资源时用到。如果设置,会在 success callback 的 res 参数加上可以直接使用的 fileURL 字段。否则需要自己拼接

domain: 'https://qiniu.sijitianjian.com',

// qiniuShouldUseQiniuFileName 如果是 true,则文件的 key 由 qiniu 服务器分配(全局去重)。如果是 false,则文件的 key 使用微信自动生成的 filename。出于初代sdk用户升级后兼容问题的考虑,默认是 false。

// 微信自动生成的 filename较长,导致fileURL较长。推荐使用{qiniuShouldUseQiniuFileName: true} + "通过fileURL下载文件时,自定义下载名" 的组合方式。

// 自定义上传key 需要两个条件:1. 此处shouldUseQiniuFileName值为false。 2. 通过修改qiniuUploader.upload方法传入的options参数,可以进行自定义key。(请不要直接在sdk中修改options参数,修改方法请见demo的index.js)

// 通过fileURL下载文件时,自定义下载名,请参考:七牛云“对象存储 > 产品手册 > 下载资源 > 下载设置 > 自定义资源下载名”(https://developer.qiniu.com/kodo/manual/1659/download-setting)。本sdk在README.md的"常见问题"板块中,有"通过fileURL下载文件时,自定义下载名"使用样例。

shouldUseQiniuFileName: false

};

// 将七牛云相关配置初始化进本sdk

qiniuUploader.init(options);

}

/**

* 获取唯一字符串

*/

const getUUid = () => {

var s = [];

var hexDigits = "0123456789abcdef";

for (var i = 0; i < 36; i++) {

s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1);

}

s[14] = "4"; // bits 12-15 of the time_hi_and_version field to 0010

s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1); // bits 6-7 of the clock_seq_hi_and_reserved to 01

s[8] = s[13] = s[18] = s[23] = "-";

var uuid = s.join("");

return uuid;

}

module.exports = {

formatTime: formatTime,

getUUid,

formatNumber,

base64ToUrlSafe,

getQiniuToken,

initQiniu

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值