npm install qiniu –save
const qiniu = require('qiniu')
// ak和sk分别可以在七牛云个人中心查看
const accessKey = '***zs1z8SfbXLuntI***'
const secretKey = '***BJYJ1lkWOAJcp***'
// 鉴权对象mac
const mac = new qiniu.auth.digest.Mac(accessKey, secretKey);
const config = new qiniu.conf.Config();
//zone为你所购买的对象存储空间的地区,如华南、华东等
config.zone = qiniu.zone.Zone_z1
// 资源管理的操作对象
const bucketManager = new qiniu.rs.BucketManager(mac, config);
const url = 'https://img3.doubanio.com/view/photo/l_ratio_poster/public/p2530772196.jpg'
const bucket = 'images'
const key = 'jinghong.png'
该资源上传到七牛云后,域名将为:七牛云资源域名 + key
bucketManager.fetch(url, bucket, key, (err, respBody, respInfo) => {
if (err) {
console.log(`发生异常${err}`)
} else {
if (respInfo.statusCode === 200) {
console.log(`key: ${respBody.key} Hash: ${respBody.hash}
fsize: ${respBody.fsize} mimeType: ${respBody.mimeType}`)
} else {
console.log('错误status', respInfo.statusCode)
console.log(respBody);
}
}
})
// 封装成promise
const uploadQiniu = (url, bucket, key) => {
// 返回一个promise对象
return new Promise((resolve, reject) => {
bucketManager.fetch(url, bucket, key, (err, resBody, resInfo) => {
if (err) {
reject(err)
} else {
if (resInfo.statusCode === 200) {
resolve(resBody.key)
} else {
console.log(`错误状态码:${resInfo.statusCode}`)
}
}
})
})
}
uploadQiniu(url, bucket, key).then((resKey) => {
console.log(resKey)
}).catch((err) => {
console.log(`初始化${err}`)
})
// async/await方法调用
;(async () => {
console.log('start upload')
try {
const newKey = await uploadQiniu(url, bucket, key)
console.log(`上传结束,更新的key为${newKey}`)
} catch (err) {
console.log(err)
}
})()
七牛云官方文档:
http://developer.qiniu.com/kodo/sdk/1289/nodejs#upload-flow