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服务器(10):处理上传图片
Dec 18 NodeJs
浅析Nodejs npm常用命令
Jun 14 NodeJs
NodeJS配置HTTPS服务实例分享
Feb 19 NodeJs
详解nodeJS之二进制buffer对象
Jun 03 NodeJs
详解HTTPS 的原理和 NodeJS 的实现
Jul 04 NodeJs
Windows下快速搭建NodeJS本地服务器的步骤
Aug 09 NodeJs
nodejs实现大文件(在线视频)的读取
Oct 16 NodeJs
nodejs实现OAuth2.0授权服务认证
Dec 27 NodeJs
nodejs基于mssql模块连接sqlserver数据库的简单封装操作示例
Jan 05 NodeJs
手把手教你如何使用nodejs编写cli命令行
Nov 05 NodeJs
Nodejs中怎么实现函数的串行执行
Mar 02 NodeJs
nodejs语言实现验证码生成功能的示例代码
Oct 13 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验证手机号码(支持归属地查询及编码为UTF8)
2013/02/01 PHP
关于扩展 Laravel 默认 Session 中间件导致的 Session 写入失效问题分析
2016/01/08 PHP
PHP实现统计在线人数功能示例
2016/10/15 PHP
在JavaScript中实现命名空间
2006/11/23 Javascript
用JQuery 实现AJAX加载XML并解析的脚本
2009/07/25 Javascript
通过jQuery打造支持汉字,拼音,英文快速定位查询的超级select插件
2010/06/18 Javascript
JQuery给元素添加/删除节点比如select
2013/04/02 Javascript
js通过元素class名字获取元素集合的具体实现
2014/01/06 Javascript
jQuery中:animated选择器用法实例
2014/12/29 Javascript
JavaScript实现网页加载进度条代码超简单
2015/09/21 Javascript
jQuery.deferred对象使用详解
2016/03/18 Javascript
Jq通过td获取同行其它列td的方法
2016/10/05 Javascript
JavaScript实现类似拉勾网的鼠标移入移出效果
2016/10/27 Javascript
JS用斜率判断鼠标进入DIV四个方向的方法
2016/11/07 Javascript
浅谈Vue2.0中v-for迭代语法的变化(key、index)
2018/03/06 Javascript
Vue引入jquery实现平滑滚动到指定位置
2018/05/09 jQuery
微信小程序实现点击空白隐藏的方法示例
2019/08/13 Javascript
在DigitalOcean的服务器上部署flaskblog应用
2015/12/19 Python
Linux-ubuntu16.04 Python3.5配置OpenCV3.2的方法
2018/04/02 Python
python批量替换多文件字符串问题详解
2018/04/22 Python
python 创建一个空dataframe 然后添加行数据的实例
2018/06/07 Python
关于python写入文件自动换行的问题
2018/06/23 Python
Python2.7实现多进程下开发多线程示例
2019/05/31 Python
在tensorflow中设置保存checkpoint的最大数量实例
2020/01/21 Python
解决jupyter notebook 前面书写后面内容消失的问题
2020/04/13 Python
Python如何实现FTP功能
2020/05/28 Python
JD Sports瑞典:英国领先的运动时尚商店
2018/01/28 全球购物
mysql的最长数据库名,表名,字段名可以是多长
2014/04/21 面试题
教师师德反思材料
2014/02/15 职场文书
优秀公益广告词大全
2014/03/19 职场文书
煤矿安全生产标语
2014/06/06 职场文书
幼儿园老师个人总结
2015/02/28 职场文书
2015年科协工作总结
2015/05/19 职场文书
医院岗前培训心得体会
2016/01/08 职场文书
MySql开发之自动同步表结构
2021/05/28 MySQL
企业开发CSS命名BEM代码规范实践
2022/02/12 HTML / CSS