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教程之异步I/O
Nov 21 NodeJs
Nodejs关于gzip/deflate压缩详解
Mar 04 NodeJs
NodeJS仿WebApi路由示例
Feb 28 NodeJs
nodejs入门教程五:连接数据库的方法分析
Apr 24 NodeJs
NodeJs模拟登陆正方教务
Apr 28 NodeJs
Nodejs中Express 常用中间件 body-parser 实现解析
May 22 NodeJs
浅析 NodeJs 的几种文件路径
Jun 07 NodeJs
nodejs前端自动化构建环境的搭建
Jul 26 NodeJs
nodejs socket服务端和客户端简单通信功能
Sep 14 NodeJs
nodejs acl的用户权限管理详解
Mar 14 NodeJs
详解NodeJs项目 CentOs linux服务器线上部署
Sep 16 NodeJs
NodeJS有难度的面试题(能答对几个)
Oct 09 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在线打包程序源码
2008/07/27 PHP
ThinkPHP表单自动验证实例
2014/10/13 PHP
PHP下载远程图片并保存到本地方法总结
2016/01/22 PHP
php实现中文转数字
2016/02/18 PHP
PHP下的浮点运算不准的解决方法
2016/10/27 PHP
jQuery 表单验证扩展(三)
2010/10/20 Javascript
dotopAlert 提示用户需安装播放器的代码
2012/09/17 Javascript
JavaScript打印iframe内容示例代码
2013/08/20 Javascript
js控制frameSet示例
2013/09/10 Javascript
js获取电脑分辨率的思路及操作
2013/11/22 Javascript
JavaScript判断变量是否为undefined的两种写法区别
2013/12/04 Javascript
Nodejs实现的一个静态服务器实例
2014/12/06 NodeJs
jquery按回车键实现表单提交的简单实例
2016/05/25 Javascript
基于JS实现弹出一个隐藏的div窗口body页面变成灰色并且不可被编辑
2016/12/14 Javascript
详解在Angularjs中ui-sref和$state.go如何传递参数
2017/04/24 Javascript
jquery鼠标悬停导航下划线滑出效果
2017/09/29 jQuery
vue监听键盘事件的快捷方法【推荐】
2018/07/11 Javascript
微信小程序canvas.drawImage完全显示图片问题的解决
2018/11/30 Javascript
通过实践编写优雅的JavaScript代码
2019/05/30 Javascript
vue+element表格导出为Excel文件
2019/09/26 Javascript
详解js location.href和window.open的几种用法和区别
2019/12/02 Javascript
[00:23]魔方之谜解锁款式
2018/12/20 DOTA
Python中给List添加元素的4种方法分享
2014/11/28 Python
详解python脚本自动生成需要文件实例代码
2017/02/04 Python
创建Shapefile文件并写入数据的例子
2019/11/26 Python
tensorflow实现读取模型中保存的值 tf.train.NewCheckpointReader
2020/02/10 Python
Linux内核的同步机制是什么?主要有哪几种内核锁
2016/07/11 面试题
互联网电子商务专业毕业生求职信
2014/03/18 职场文书
毕业设计说明书
2014/05/07 职场文书
学院党的群众路线教育实践活动整改方案
2014/10/04 职场文书
党员作风建设整改方案
2014/10/27 职场文书
精神文明建设先进个人事迹材料
2014/12/24 职场文书
驻村工作简报
2015/07/20 职场文书
使用goaccess分析nginx日志的详细方法
2021/07/09 Servers
MySQL悲观锁与乐观锁的实现方案
2021/11/02 MySQL
Go语言 详解net的tcp服务
2022/04/14 Golang