1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- const qiniu = require('qiniu')
- const path = require('path')
- const sys = require('../config/sys')
- const sceneDir = path.join(__dirname, '../', sys.static_dir, sys.scene_dir)
- const key = 'dlPPwgZky_F-iP8CbSbJpiAtAcqw3BYwb9rdHMrS'
- const secre = 'YEtkLKDsImXB-8m1CT1zV_YwCwwGvrUvo2ktj9KZ'
- const host = 'super.4dage.com/'
- let getToken = (() => {
- const bucket = 'super'
- 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;
- console.log('----', scope)
- 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 = path.join(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)
- }
- })
- })
- }
- const fs = require('fs')
- const logfile = path.join(__dirname, '../upload.log')
- module.exports = async (name, file) => {
- let upload = 0
- async function repeatUpload () {
- try {
- return await uploadFile(
- path.join(sceneDir, name, file),
- 'data/' + path.join(name, file)
- )
- } catch (e) {
- if (++upload < 5) {
- return repeatUpload()
- } else {
- fs.writeFileSync(logfile, fs.readFileSync(logfile) + '\r\n' + path.join(sceneDir, name, file) + '文件上传失败,失败原因:' + e.toString())
- return e
- }
- }
- }
- return await repeatUpload()
- }
|