aliUploader.js 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. const Base64 = require('./Base64.js');
  2. require('./hmac.js');
  3. require('./sha1.js');
  4. const Crypto = require('./crypto.js');
  5. // 获取policy
  6. const getPolicyBase64 = function (timeout) {
  7. let dateTime = new Date().getTime();
  8. let date = new Date(dateTime + (timeout || 1800000));
  9. let srcT = date.toISOString();
  10. const policyText = {
  11. "expiration": srcT, //设置该Policy的失效时间
  12. "conditions": [
  13. ["content-length-range", 0, 100 * 1024 * 1024] // 设置上传文件的大小限制,100mb
  14. ]
  15. };
  16. const policyBase64 = Base64.encode(JSON.stringify(policyText));
  17. return policyBase64;
  18. }
  19. // 获取签名
  20. const getSignature = function (policyBase64, AccessKeySecret) {
  21. const bytes = Crypto.HMAC(Crypto.SHA1, policyBase64, AccessKeySecret, {
  22. asBytes: true
  23. });
  24. const signature = Crypto.util.bytesToBase64(bytes);
  25. return signature;
  26. }
  27. // 获取阿里云token信息
  28. const getAliyunOssKey = function (options) {
  29. const policyBase64 = getPolicyBase64(options.timeout);
  30. const signature = getSignature(policyBase64, options.accessKeySecret);
  31. return {
  32. policy: policyBase64,
  33. accessKeyId: options.accessKeyId,
  34. accessKeySecret: options.accessKeySecret,
  35. signature: signature,
  36. success_action_status: '200'
  37. }
  38. }
  39. module.exports = getAliyunOssKey;