首先安裝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