在node中使用promise上传图片到七牛云
为了分摊个人服务器压力、提升图片下载上传的速度,使用七牛云保存用户上传的图片。
后台基于express搭建的,上传使用七牛云第三方nodejs-sdk。由于七牛云上传图片只能单个进行,并且考虑到上传完成后会做一些事情,于是基于sdk再次封装了一次,代码如下:
let qn = require('qn');
let path = require('path');
// 本地文件路径
let filePaths = ['./public/images/33.jpg', './public/images/1.jpg'];
let client = qn.create({
accessKey: 'ZfEZGc8IWw_WvLNYa8-J6LCHRifl8Y0Tmz1FOyg3',
secretKey: 'Y1sMVB-xUbyyrBfCdg1aH0zXY6p2ADTkz7OFLoCk',
bucket: 'fayinme', // 在七牛云创建的空间名字
origin: 'opo2yekqx.bkt.clouddn.com', // 使用测试域名
});
let qiniuUpload = (filePaths) => {
// map()方法返回新的 promise对象数组,
// 若使用forEach(),报错:Cannot read property 'Symbol(Symbol.iterator)' of undefined
// 因为没有返回值,运行到 return Promise.all(qiniuPromise) 时会返回 undefinded
let qiniuPromise = filePaths.map(filePath => {
// key 为上传到七牛云后自定义图片的名称
return new Promise((resolve, reject) => {
let fileName = path.win32.basename(filePath);
client.uploadFile(filePath, {key: fileName}, function (err, result) {
if(err) {
reject(err);
}else {
resolve(result);
}
});
});
});
return Promise.all(qiniuPromise);
};
// 调用函数
qiniuUpload(filePaths).then(res => console.log(res));
注释:
1、npm install --save qn安装 qn 模块后require
2、封装 qiniuUpload 函数,通过七牛云上传后返回一个 promise 对象
- 2.1 client.uploadFile(filePath, {key: fileName}, callback)
- filePath: 图片在本地的路径。
- fileName:上传到七牛云后自定义的图片名字,本例使用原图片名称。
- callback:成功后的回调。
3、调用 qiniuUpload 函数,打印结果
在node中使用promise上传图片到七牛云的更多相关文章
- 深入理解jQuery、Angular、node中的Promise
最初遇到Promise是在jQuery中,在jQuery1.5版本中引入了Deferred Object,这个异步队列模块用于实现异步任务和回调函数的解耦.为ajax模块.队列模块.ready事件提供 ...
- 上传图片到七牛云(服务端 node.js sdk)
大体思路 前端要上传图片到七牛云,需要有一个token进行授权操作,而获取这个上传的upload token(以下简称upToken),在服务端需要一定的身份校验,比如说:只有登录的vip用户才能拿到 ...
- ueditor上传图片到七牛云存储(form api,java)
转:http://my.oschina.net/duoduo3369/blog/174655 ueditor上传图片到七牛云存储 ueditor结合七牛传图片 七牛的试炼 开发前的准备与注意事项说明 ...
- js上传图片到七牛云存储
项目开发过程中遇到一个需求,运营人员需要上传图片到七牛云,最开始的做法是,后台对接七牛,然后出一个接口,前端调用接口,先将图片传到后台,然后后台再上传七牛云,用的过程中发现,图片小的情况下还好,图片一 ...
- TP5上传图片到七牛云,并且删除七牛云的图片
一,通过composer 下载七牛云 sdk composer require qiniu/php-sdk 二,手动下载七牛云sdk 1,https://developer.qiniu.com/kod ...
- Node中的promise简说及入门
Node的特色之一就是异步回调,可是回调过多,就会形成著名的回调金字塔. 直接上例子,我要读取1.txt里的内容,然后在这个内容上加上'test'并重新写入文件,如下代码所示: var fs = re ...
- UEditor上传图片到七牛云储存(java)
我们的网站一般放在虚拟空间或者服务器上,图片如果存在本地目录,会占用很多空间和流量,还增加了负担,好的办法是把图片存放到云储存服务里面,平时用url去拿 云储存:普遍说又拍云和七牛比较好,看到七牛免费 ...
- UEditor上传图片到七牛云储存(c#)
我们的网站一般放在虚拟空间或者服务器上,图片如果存在本地目录,会占用很多空间和流量,还增加了负担,好的办法是把图片存放到云储存服务里面,平时用url去拿 云储存:普遍说又拍云和七牛比较好,看到七牛免费 ...
- <el-upload></el-upload>组件上传图片到七牛云
[01]搭建好页面结构.定义数据与接口 <el-upload method="post" ref="upload" :action="domai ...
随机推荐
- 643. Maximum Average Subarray I
static int wing=[]() { std::ios::sync_with_stdio(false); cin.tie(NULL); ; }(); class Solution { publ ...
- 2018.08.10 atcoder Median Sum(01背包)
传送门 题意简述:输入一个数组an" role="presentation" style="position: relative;">anan. ...
- SPSS-多重响应-频率和交叉表案例分析(问卷调查分析)
在10.1休假前,希望跟大家讨论一下SPSS-多重响应--频率和交叉表分析,希望大家能够多提点提点 在云南电信网上营业厅做了一个关于“客户不使用电信3g业务的原因有哪些的问卷调查,问题所示: 这份问卷 ...
- Android:手把手教你打造可缩放移动的ImageView(上)
定义ImageView,实现功能如下: 1.初始化时图片垂直居中显示,拉伸图片宽度至ImageView宽度. 2.使用两根手指放大缩小图片,可设置最大放大倍数,当图片小于ImageView宽度时,在手 ...
- Codeforces805D. Minimum number of steps 2017-05-05 08:46 240人阅读 评论(0) 收藏
D. Minimum number of steps time limit per test 1 second memory limit per test 256 megabytes input st ...
- Hibernate 的复杂用法HibernateCallback
HibernateTemplate还提供了一种更加灵活的方式来操作数据库,通过这种方式可以完全使用Hibernate的操作方式.HibernateTemplate的灵活访问方式可通过如下两个方法完成: ...
- Eclipse代码提示功能设置
1. 解决实例化时自动补全不必要的单词问题 2. 以MyEclipse 6.5重新配图 鉴 于网上的批评之声甚大,我只想说明我的想法:这样的增强代码提示,最终是用来辅助我们 ...
- 如何实现让你的网站支持Google Roboto Font
最近在写一个移动端的web项目,designer设计的页面效果图就是使用Google Roboto Font.The Roboto Font 是Google为Android 4.0 Ice-Cream ...
- Android 权限的由来
在Android APP开发过程中,某些行为动作需要在AndroidManifest.xml清单文件中进行权限相关的配置: <!-- 增加权限 --> <uses-permissio ...
- Android RelativeLayout属性介绍
在Android开发当中,虽然有五大布局,但我推荐使用的是相对布局,Google也是推荐使用相对布局,所有对RelativeLayout布局,常用的属性做一个整理: android:layout_ma ...