網絡資源直接轉存到七牛雲對象存儲

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章