mirror of
https://github.com/crawlab-team/crawlab.git
synced 2026-01-21 17:21:09 +01:00
82 lines
1.8 KiB
Go
82 lines
1.8 KiB
Go
const path = require('path')
|
|
const qiniu = require('qiniu')
|
|
const walkSync = require('walk-sync')
|
|
const chalk = require('chalk')
|
|
|
|
// target directory
|
|
const targetDir = './api'
|
|
|
|
// access key
|
|
const accessKey = process.env.QINIU_ACCESS_KEY
|
|
|
|
// secret key
|
|
const secretKey = process.env.QINIU_SECRET_KEY
|
|
|
|
// bucket
|
|
const bucket = process.env.QINIU_BUCKET
|
|
|
|
// config
|
|
const config = new qiniu.conf.Config()
|
|
|
|
// zone
|
|
config.zone = qiniu.zone[process.env.QINIU_ZONE]
|
|
|
|
function uploadFile(localFile, key) {
|
|
// options
|
|
const options = {
|
|
scope: `${bucket}:${key}`,
|
|
}
|
|
|
|
// mac
|
|
const mac = new qiniu.auth.digest.Mac(accessKey, secretKey)
|
|
|
|
// put policy
|
|
const putPolicy = new qiniu.rs.PutPolicy(options)
|
|
|
|
// upload token
|
|
const uploadToken = putPolicy.uploadToken(mac)
|
|
|
|
return new Promise((resolve, reject) => {
|
|
const formUploader = new qiniu.form_up.FormUploader(config)
|
|
const putExtra = new qiniu.form_up.PutExtra()
|
|
formUploader.putFile(uploadToken, key, localFile, putExtra, function (respErr, respBody, respInfo) {
|
|
if (respErr) {
|
|
throw respErr
|
|
}
|
|
if (respInfo.statusCode === 200) {
|
|
console.log(`${chalk.green('uploaded')} ${localFile} => ${key}`)
|
|
resolve()
|
|
} else if (respInfo.statusCode === 614) {
|
|
console.log(`${chalk.yellow('exists')} ${localFile} => ${key}`)
|
|
resolve()
|
|
} else {
|
|
const errMsg = `${chalk.red('error[' + respInfo.statusCode + ']')} ${localFile} => ${key}`
|
|
console.error(errMsg)
|
|
reject(new Error(respBody))
|
|
}
|
|
})
|
|
})
|
|
}
|
|
|
|
async function main() {
|
|
// paths
|
|
const paths = walkSync(targetDir, {
|
|
includeBasePath: true, directories: false,
|
|
})
|
|
|
|
// iterate paths
|
|
for (const filePath of paths) {
|
|
const localFile = path.resolve(filePath)
|
|
const key = filePath.replace(targetDir + '/', '')
|
|
try {
|
|
await uploadFile(localFile, key)
|
|
} finally {
|
|
// do nothing
|
|
}
|
|
}
|
|
}
|
|
|
|
(async () => {
|
|
await main()
|
|
})()
|