upqiniu.js 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. const qiniu = require('qiniu')
  2. const path = require('path')
  3. const key = 'dlPPwgZky_F-iP8CbSbJpiAtAcqw3BYwb9rdHMrS'
  4. const secre = 'YEtkLKDsImXB-8m1CT1zV_YwCwwGvrUvo2ktj9KZ'
  5. const host = 'model3d.4dage.com/'
  6. let getToken = (() => {
  7. const bucket = 'model3d'
  8. const expires = 7200
  9. let mac = new qiniu.auth.digest.Mac(key, secre);
  10. let defaultToken
  11. (function referToken() {
  12. let putPolicy = new qiniu.rs.PutPolicy({ expires, scope: bucket })
  13. defaultToken = putPolicy.uploadToken(mac);
  14. setTimeout(referToken, (expires - 200) * 1000)
  15. })();
  16. function getToken (name) {
  17. if (!name) return defaultToken;
  18. let scope = name ? bucket + ':' + name : bucket;
  19. let putPolicy = new qiniu.rs.PutPolicy({ expires, scope })
  20. return putPolicy.uploadToken(mac);
  21. }
  22. return getToken
  23. })();
  24. let zoons = {
  25. '华东': 'Zone_z0',
  26. '华北': 'Zone_z1',
  27. '华南': 'Zone_z2',
  28. '北美': 'Zone_na0'
  29. }
  30. function uploadFile(localFile, target, zone = '华南') {
  31. target = target.replace(/\\/ig, "\/")
  32. let config = new qiniu.conf.Config();
  33. let token = getToken(target)
  34. let formUploader = new qiniu.form_up.FormUploader()
  35. let putExtra = new qiniu.form_up.PutExtra();
  36. config.zone = qiniu.zone[zoons[zone]];
  37. config.useHttpsDomain = true;
  38. config.useCdnDomain = true;
  39. return new Promise((resolve, reject) => {
  40. formUploader.putFile(token, target, localFile, putExtra, err => {
  41. if (err) {
  42. reject(err)
  43. } else {
  44. resolve(host + target)
  45. }
  46. })
  47. })
  48. }
  49. module.exports = async (file, name) => {
  50. return await uploadFile(file, 'data/' + name)
  51. }