网络资源直接转存到七牛云对象存储

本文介绍了如何通过Node.js将网络资源上传至七牛云对象存储。步骤包括安装qiniu npm包,设置鉴权和配置对象,初始化资源管理,指定资源URL和目标存储空间,以及利用Promise或async/await实现异步上传。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值