首先安装qiniu的npm包
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);
设置要获取的网络资源url和key,以及需要转存到七牛云空间名字bucket
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对象
// 封装成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}`)
}
}
})
})
}
Promise异步上传函数的使用方法: then/catch方法
uploadQiniu(url, bucket, key).then((resKey) => {
console.log(resKey)
}).catch((err) => {
console.log(`初始化${err}`)
})
Promise异步上传函数的使用方法: async/await方法
// 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