nodejs使用七牛雲存儲來上傳文件

nodejs 使用七牛雲存儲上傳文件

本文在最新qiniu sdk 開發只適用於0.4.6node 開發。
詳細關注: https://github.com/tstrilogy/simple-chat

在網上尋找了很多七牛雲存儲的博文,也百度了許多。但是都不盡如人意,因此自個擼一個小示例。

1-準備工作

  • 確認安裝node和npm
  • 安裝 qiniu,formidable,express模塊
npm install --save qiniu formidable
  • [x] 導入模塊
let qiniu = require('qiniu'),
    formidable = require('formidable'),
    express = require('express'),
    router = express.Router();

2-服務器端的雲存儲操作

2-1文件上傳

router.post('/qiniu', function (req, res, next) {

  let bucket = 'myblog',
    key = '',
    form = formidable.IncomingForm(),
    token, putPolicy;


  form.uploadDir = path.join(__dirname, '../../', 'public/img/upload');
  form.keepExtensions = true

  form.parse(req, function (err, fields, files) {
    if (err) {
      console.log(err);
    }
    key = files.mypic.path.split(path.sep).pop();
    putPolicy = new qiniu.rs.PutPolicy(bucket + ':' + key)
    //設置回調
    // putPolicy.callbackUrl = 'http://localhost:81/test/callback'
    // putPolicy.callbackBody = 'filename=$(fname)&filesize=$(fsize)'

    token = putPolicy.token()

    console.log('token', token)
    let extra = new qiniu.io.PutExtra()
    qiniu.io.putFile(token, key, files.mypic.path, extra, function (err, ret) {
      if (err) {
        console.log(err)
      }
      console.log('ret', ret);
      res.json({
        token: token,
        ret: ret,
        files: files,
        fields: fields
      })
    })
  })

})

文件下載

router.get('/download/:key', function (req, res, next) {
  let url = 'http://xxxx.bkt.clouddn.com/' + req.params.key,
    policy = new qiniu.rs.GetPolicy();

  console.log(url);

  res.json({url: policy.makeRequest(url)})
})

文件獲取

router.get('/info/:key', function (req, res, next) {
  let bucket = 'myblog',
    key = req.params.key,
    client = new qiniu.rs.Client();

  client.stat(bucket, key, (err, ret) => {
    if (err) {
      console.log(err);
    }
    res.json(ret);
  })
})
發佈了25 篇原創文章 · 獲贊 12 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章