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与Mysql的交互示例代码
Aug 18 NodeJs
Nodejs关于gzip/deflate压缩详解
Mar 04 NodeJs
详解NodeJS框架express的路径映射(路由)功能及控制
Mar 24 NodeJs
Nodejs进阶:express+session实现简易登录身份认证
Apr 24 NodeJs
nodejs 图解express+supervisor+ejs的用法(推荐)
Sep 08 NodeJs
NodeJS实现视频转码的示例代码
Nov 18 NodeJs
NodeJS爬虫实例之糗事百科
Dec 14 NodeJs
nodejs更改项目端口号的方法
May 13 NodeJs
解决Nodejs全局安装模块后找不到命令的问题
May 15 NodeJs
Nodejs Express 通过log4js写日志到Logstash(ELK)
Aug 30 NodeJs
nodejs通过钉钉群机器人推送消息的实现代码
May 05 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
短波的认识
2021/03/01 无线电
php生成WAP页面
2006/10/09 PHP
PHP IN_ARRAY 函数使用注意事项
2010/07/24 PHP
php生成EAN_13标准条形码实例
2013/11/13 PHP
php基于str_pad实现卡号不足位数自动补0的方法
2014/11/12 PHP
非常实用的php验证码类
2016/05/15 PHP
docker-compose部署php项目实例详解
2019/07/30 PHP
比较简单实用的使用正则三种版本的js去空格处理方法
2007/11/18 Javascript
基于jQuery的让非HTML5浏览器支持placeholder属性的代码
2011/05/24 Javascript
jquery.artwl.thickbox.js  一个非常简单好用的jQuery弹出层插件
2012/03/01 Javascript
对frameset、frame、iframe的js操作示例代码
2013/08/16 Javascript
详细解读JavaScript编程中的Promise使用
2015/07/27 Javascript
jQuery each函数源码分析
2016/05/25 Javascript
Bootstrap轮播插件中图片变形的终极解决方案 使用jqthumb.js
2016/07/10 Javascript
jquery实现下拉菜单的手风琴效果
2017/07/23 jQuery
基于Vue的延迟加载插件vue-view-lazy
2018/05/21 Javascript
vue组件实现可搜索下拉框扩展
2020/10/23 Javascript
vue通过style或者class改变样式的实例代码
2018/10/30 Javascript
JS实现获取自定义属性data值的方法示例
2018/12/19 Javascript
实现一个 Vue 吸顶锚点组件方法
2019/07/10 Javascript
基于Vue+ElementUI的省市区地址选择通用组件
2019/11/20 Javascript
JavaScript实现Tab选项卡切换
2020/02/13 Javascript
python抓取网页中的图片示例
2014/02/28 Python
Python日志模块logging简介
2015/04/13 Python
Python3按一定数据位数格式处理bin文件的方法
2019/01/24 Python
在PyCharm中控制台输出日志分层级分颜色显示的方法
2019/07/11 Python
python爬取盘搜的有效链接实现代码
2019/07/20 Python
Python实现数值积分方式
2019/11/20 Python
Python configparser模块操作代码实例
2020/06/08 Python
SmartBuyGlasses意大利:购买太阳镜、眼镜和隐形眼镜
2018/11/20 全球购物
Farfetch阿联酋:奢侈品牌时尚购物平台
2019/07/26 全球购物
JAVA高级程序员面试题
2013/09/06 面试题
中小学生安全教育观后感
2015/06/17 职场文书
大学组织委员竞选稿
2015/11/21 职场文书
python Tkinter模块使用方法详解
2022/04/07 Python
windows server 2012安装FTP并配置被动模式指定开放端口
2022/06/10 Servers