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 相关文章推荐
windows系统下简单nodejs安装及环境配置
Jan 08 NodeJs
轻松创建nodejs服务器(9):实现非阻塞操作
Dec 18 NodeJs
nodejs爬虫抓取数据之编码问题
Jul 03 NodeJs
NodeJS连接MongoDB数据库时报错的快速解决方法
May 13 NodeJs
NodeJS远程代码执行
Aug 28 NodeJs
nodejs模块nodemailer基本使用-邮件发送示例(支持附件)
Mar 28 NodeJs
NodeJs安装npm包一直失败的解决方法
Apr 28 NodeJs
nodejs集成sqlite使用示例
Jun 05 NodeJs
用nodejs实现json和jsonp服务的方法
Aug 25 NodeJs
Nodejs连接mysql并实现增、删、改、查操作的方法详解
Jan 04 NodeJs
nodejs log4js 使用详解
May 31 NodeJs
nodejs使用node-xlsx生成excel的方法示例
Aug 22 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命名空间和自动加载类
2016/04/03 PHP
PHP+Ajax实现的无刷新分页功能详解【附demo源码下载】
2017/07/03 PHP
PHP多进程通信-消息队列使用
2019/03/08 PHP
JQuery1.6 使用方法三
2011/11/23 Javascript
jQuery响应enter键的实现思路
2014/04/18 Javascript
一款简单的jQuery图片标注效果附源码下载
2016/03/22 Javascript
js Canvas实现圆形时钟教程
2016/09/19 Javascript
JavaScript数组操作详解
2017/02/04 Javascript
浅谈Vue SPA 首屏加载优化实践
2017/12/15 Javascript
Vue异步组件处理路由组件加载状态的解决方案
2018/09/07 Javascript
vue.js基于v-for实现批量渲染 Json数组对象列表数据示例
2019/08/03 Javascript
[01:02:17]2014 DOTA2华西杯精英邀请赛 5 24 DK VS VG
2014/05/26 DOTA
Python使用urllib2获取网络资源实例讲解
2013/12/02 Python
通过Python爬虫代理IP快速增加博客阅读量
2016/12/14 Python
python+requests+unittest API接口测试实例(详解)
2017/06/10 Python
详解Python使用tensorflow入门指南
2018/02/09 Python
Python cookbook(数据结构与算法)让字典保持有序的方法
2018/02/18 Python
python opencv之分水岭算法示例
2018/02/24 Python
解决项目pycharm能运行,在终端却无法运行的问题
2019/01/19 Python
python 设置xlabel,ylabel 坐标轴字体大小,字体类型
2019/07/23 Python
Python实现直播推流效果
2019/11/26 Python
AmazeUI 导航条的实现示例
2020/08/14 HTML / CSS
UGG澳洲官网:UGG Australia
2018/04/26 全球购物
中考标语大全
2014/06/05 职场文书
2014年大学班级工作总结
2014/11/14 职场文书
合伙经营协议书范本(通用版)
2014/12/03 职场文书
课外活动实习计划
2015/01/19 职场文书
六一儿童节开幕词
2015/01/29 职场文书
通知书大全
2015/04/27 职场文书
鲁滨孙漂流记读书笔记
2015/06/30 职场文书
投资入股协议书
2016/03/22 职场文书
甜美蛋糕店的创业计划书模板,拿来即用!
2019/08/21 职场文书
CSS实现漂亮的时钟动画效果的实例代码
2021/03/30 HTML / CSS
nginx配置proxy_pass中url末尾带/与不带/的区别详解
2021/03/31 Servers
详解CSS不受控制的position fixed
2021/05/25 HTML / CSS
Moment的feature导致线上bug解决分析
2022/09/23 Javascript