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中的MongoDB快速入门详细教程
Nov 11 NodeJs
NodeJS遍历文件生产文件列表功能示例
Jan 22 NodeJs
nodejs读写json文件的简单方法(必看)
Mar 09 NodeJs
搭建简单的nodejs http服务器详解
Mar 09 NodeJs
详解nodejs微信公众号开发——4.自动回复各种消息
Apr 11 NodeJs
Nodejs搭建wss服务器教程
May 24 NodeJs
nodeJS实现路由功能实例代码
Jun 08 NodeJs
nodeJs实现基于连接池连接mysql的方法示例
Feb 10 NodeJs
NodeJS父进程与子进程资源共享原理与实现方法
Mar 16 NodeJs
nodejs使用node-xlsx生成excel的方法示例
Aug 22 NodeJs
nodejs中使用archive压缩文件的实现代码
Nov 26 NodeJs
NodeJs内存占用过高的排查实战记录
May 10 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
解析左右值无限分类的实现算法
2013/06/20 PHP
PHP error_log()将错误信息写入一个文件(定义和用法)
2013/10/25 PHP
PHP使用CURL获取302跳转后的地址实例
2014/05/04 PHP
PHP对象递归引用造成内存泄漏分析
2014/08/28 PHP
微信推送功能实现方式图文详解
2019/07/12 PHP
跟我一起学写jQuery插件开发方法(附完整实例及下载)
2010/04/01 Javascript
javascript工具库代码
2012/03/29 Javascript
jquery根据name属性查找的小例子
2013/11/21 Javascript
js过滤特殊字符输入适合输入、粘贴、拖拽多种情况
2014/03/22 Javascript
jquery复选框多选赋值给文本框的方法
2015/01/27 Javascript
jQuery选择器源码解读(四):tokenize方法的Expr.preFilter
2015/03/31 Javascript
jQuery实现调整表格单列顺序完整实例
2016/06/20 Javascript
AngularJS基础 ng-model 指令详解及示例代码
2016/08/02 Javascript
JS小数转换为整数的方法分析
2017/01/07 Javascript
微信小程序中顶部导航栏的实现代码
2017/03/30 Javascript
javascript基于牛顿迭代法实现求浮点数的平方根【递归原理】
2017/09/28 Javascript
Vue全局分页组件的实现代码
2018/08/10 Javascript
如何在Angular应用中创建包含组件方法示例
2019/03/23 Javascript
Vuex 模块化使用详解
2019/07/31 Javascript
JS判断浏览器类型与操作系统的方法分析
2020/04/30 Javascript
Python图算法实例分析
2016/08/13 Python
Python字典,函数,全局变量代码解析
2017/12/18 Python
在python中pandas读文件,有中文字符的方法
2018/12/12 Python
对python dataframe逻辑取值的方法详解
2019/01/30 Python
python学生管理系统
2019/01/30 Python
对Pycharm创建py文件时自定义头部模板的方法详解
2019/02/12 Python
pytest中文文档之编写断言
2019/09/12 Python
python自动结束mysql慢查询会话的实例代码
2019/10/27 Python
pycharm通过anaconda安装pyqt5的教程
2020/03/24 Python
办公室保洁员岗位职责
2013/12/02 职场文书
送货司机岗位职责
2013/12/11 职场文书
办公室副主任职责范本
2014/03/08 职场文书
百日安全活动总结
2014/05/04 职场文书
学生党员检讨书范文
2014/12/27 职场文书
MySQL索引知识的一些小妙招总结
2021/05/10 MySQL
javascript Number 与 Math对象的介绍
2021/11/17 Javascript