NodeJS使用七牛云存储上传文件的方法


Posted in NodeJs onJuly 24, 2017

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);
 })
})

总结

以上所述是小编给大家介绍的NodeJS使用七牛云存储上传文件的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

NodeJs 相关文章推荐
nodejs npm package.json中文文档
Sep 04 NodeJs
Nodejs全栈框架StrongLoop推荐
Nov 09 NodeJs
nodejs实现bigpipe异步加载页面方案
Jan 26 NodeJs
Nodejs下DNS缓存问题浅析
Nov 16 NodeJs
nodejs利用http模块实现银行卡所属银行查询和骚扰电话验证示例
Dec 30 NodeJs
nodejs操作mysql实现增删改查的实例
May 28 NodeJs
Express+Nodejs 下的登录拦截实现代码
Jul 01 NodeJs
详解使用PM2管理nodejs进程
Oct 24 NodeJs
NodeJs form-data格式传输文件的方法
Dec 13 NodeJs
Nodejs中使用puppeteer控制浏览器中视频播放功能
Aug 26 NodeJs
NodeJs crypto加密制作token的实现代码
Nov 15 NodeJs
分享五个Node.js开发的优秀实践 
Apr 07 NodeJs
nodejs 搭建简易服务器的图文教程(推荐)
Jul 18 #NodeJs
nodejs密码加密中生成随机数的实例代码
Jul 17 #NodeJs
nodejs构建本地web测试服务器 如何解决访问静态资源问题
Jul 14 #NodeJs
基于nodejs+express4.X实现文件下载的实例代码
Jul 13 #NodeJs
详解nodejs的express如何自动生成项目框架
Jul 12 #NodeJs
nodejs中sleep功能实现暂停几秒的方法
Jul 12 #NodeJs
nodejs中解决异步嵌套循环和循环嵌套异步的问题
Jul 12 #NodeJs
You might like
php中jQuery插件autocomplate的简单使用笔记
2012/06/14 PHP
mac下Apache + MySql + PHP搭建网站开发环境
2014/06/02 PHP
WordPress主题中添加文章列表页页码导航的PHP代码实例
2015/12/22 PHP
PHP如何读取由JavaScript设置的Cookie
2017/03/22 PHP
thinkPHP5.0框架安装教程
2017/03/25 PHP
PHP经典设计模式之依赖注入定义与用法详解
2019/05/21 PHP
解决Laravel5.5下的toArray问题
2019/10/15 PHP
Dom加载让图片加载完再执行的脚本代码
2008/05/15 Javascript
不用写JS也能使用EXTJS视频演示
2008/12/29 Javascript
基于jquery的模态div层弹出效果
2010/08/21 Javascript
js保存当前路径(cookies记录)
2010/12/14 Javascript
取得窗口大小 兼容所有浏览器的js代码
2011/08/09 Javascript
jquery怎样实现ajax联动框(二)
2013/03/08 Javascript
JSON+HTML实现国家省市联动选择效果
2014/05/18 Javascript
js打造数组转json函数
2015/01/14 Javascript
JS实现当前页居中分页效果的方法
2015/06/18 Javascript
移动端如何用下拉刷新的方式实现上拉加载
2018/12/10 Javascript
vue实现简单的日历效果
2020/09/24 Javascript
Vue.js中provide/inject实现响应式数据更新的方法示例
2019/10/16 Javascript
js实现整体缩放页面适配移动端
2020/03/31 Javascript
python输出当前目录下index.html文件路径的方法
2015/04/28 Python
python 循环while和for in简单实例
2016/08/16 Python
老生常谈python函数参数的区别(必看篇)
2017/05/29 Python
Python实现滑动平均(Moving Average)的例子
2019/08/24 Python
Python批量处理csv并保存过程解析
2020/05/16 Python
pytorch快速搭建神经网络_Sequential操作
2020/06/17 Python
分享PyCharm最新激活码(真永久激活方法)不用每月找安装参数或最新激活码了
2020/12/27 Python
Django和Ueditor自定义存储上传文件的文件名
2021/02/25 Python
党员个人思想汇报
2013/12/28 职场文书
小摄影师教学反思
2014/04/27 职场文书
感恩老师的演讲稿
2014/05/06 职场文书
爱耳日宣传活动总结
2014/07/05 职场文书
保密工作整改报告
2014/11/06 职场文书
老乡聚会通知
2015/04/23 职场文书
Python中requests库的用法详解
2022/06/05 Python
MySQL的表级锁,行级锁,排它锁和共享锁
2022/07/15 MySQL