const qiniu = require('qiniu') const path = require('path') const key = 'dlPPwgZky_F-iP8CbSbJpiAtAcqw3BYwb9rdHMrS' const secre = 'YEtkLKDsImXB-8m1CT1zV_YwCwwGvrUvo2ktj9KZ' const host = 'model3d.4dage.com/' let getToken = (() => { const bucket = 'model3d' const expires = 7200 let mac = new qiniu.auth.digest.Mac(key, secre); let defaultToken (function referToken() { let putPolicy = new qiniu.rs.PutPolicy({ expires, scope: bucket }) defaultToken = putPolicy.uploadToken(mac); setTimeout(referToken, (expires - 200) * 1000) })(); function getToken (name) { if (!name) return defaultToken; let scope = name ? bucket + ':' + name : bucket; let putPolicy = new qiniu.rs.PutPolicy({ expires, scope }) return putPolicy.uploadToken(mac); } return getToken })(); let zoons = { '华东': 'Zone_z0', '华北': 'Zone_z1', '华南': 'Zone_z2', '北美': 'Zone_na0' } function uploadFile(localFile, target, zone = '华南') { target = target.replace(/\\/ig, "\/") let config = new qiniu.conf.Config(); let token = getToken(target) let formUploader = new qiniu.form_up.FormUploader() let putExtra = new qiniu.form_up.PutExtra(); config.zone = qiniu.zone[zoons[zone]]; config.useHttpsDomain = true; config.useCdnDomain = true; return new Promise((resolve, reject) => { formUploader.putFile(token, target, localFile, putExtra, err => { if (err) { reject(err) } else { resolve(host + target) } }) }) } module.exports = async (file, name) => { return await uploadFile(file, 'data/' + name) }