node-for-upyun
v0.0.7
Published
SDK of UPYUN
Downloads
4
Readme
Node-for-UPYUN
又拍云Nodejs版本SDK
##安装
npm install node-for-upyun
##文件结构说明
- lib
- logger.js
日志配置文件
- Options.js
UpYun 功能选项
- UpYun.js
SDK主文件
- utils.js
内部使用功能函数集合
- logger.js
- logs
- debug.log
debug日志文件
- exceptions.log
异常日志文件
- debug.log
- test
- file.js
普通文件单元测试
- image.js
图像文件单元测试
- system.js
系统函数单元测试
- file.js
- image.png
图像测试资源
- package.json
Nodejs的配置文件
- README.md
ReadMe同时作为单元测试文件使用
##API介绍
####初始化
var UpYun = require("node-for-upyun");
var upyun = new UpYun();
<!--或者-->
var upyun = new UpYun('userName','password','bucketName');
####获取SDK版本
var assert = require("assert");
var UpYun = require("node-for-upyun");
var upyun = new UpYun();
assert.equal('0.X.X',upyun.version);
####上传本地文件到Cloud
uploadFileFromStream(data,uri,callback)
- data:上传文件数据流
- uri:又拍云网络路径
- callback(err,resHeaders,resData):回调函数
- err:错误信息,正常返回200
- resHeaders:通讯反馈报文头,API扩展使用
- resData:通讯反馈报文体,API扩展使用
var UpYun = require("node-for-upyun");
var upyun = new UpYun('userName','password','bucketName');
upyun.uploadFileFromStream('Hello UpYun','README.md1',function(err,resHeaders,resData){
assert.equal(200,err);
});
uploadFileFromLocal(fileFullName,uri,callback)
- fileFullName:本地文件路径
- uri:又拍云网络路径
- callback(err,resHeaders,resData):回调函数
- err:错误信息,正常返回200
- resHeaders:通讯反馈报文头,API扩展使用
- resData:通讯反馈报文体,API扩展使用
var UpYun = require("node-for-upyun");
<!--也可以这样初始化-->
var upyun = new UpYun();
upyun.options.userName = "userName";
upyun.options.password = "password";
upyun.options.bucketName = "bucketName";
upyun.uploadFileFromLocal('README.md','README.md2',function(err,resHeaders,resData){
assert.equal(200,err);
});
####下载Cloud文件到本地
downloadFileToStream(uri,callback)
- uri:又拍云网络路径
- callback(err,resHeaders,resData):回调函数
- err:错误信息,正常返回200
- resHeaders:通讯反馈报文头,API扩展使用
- resData:文件返回Stream信息
var UpYun = require("node-for-upyun");
var upyun = new UpYun('userName','password','bucketName');
upyun.downloadFileToStream('README.md1',function(err,resHeaders,resData){
assert.equal(200,err);
assert.notEqual(resData.length,0);
});
downloadFileToLocal(fileFullName,uri,callback)
- fileFullName:本地文件路径
- uri:又拍云网络路径
- callback(err,resHeaders,resData):回调函数
- err:错误信息,正常返回200
- resHeaders:通讯反馈报文头,API扩展使用
- resData:通讯反馈报文体,API扩展使用
var UpYun = require("node-for-upyun");
var upyun = new UpYun('userName','password','bucketName');
upyun.downloadFileToLocal('README.md.test','README.md1',function(err,resHeaders,resData){
assert.equal(200,err);
done();
});
####获取Cloud文件信息
retrieveFileInformation(uri,callback)
- uri:又拍云网络路径
- callback(err,resHeaders,resData,resInformation{type,size,date}):回调函数
- err:错误信息,正常返回200
- resHeaders:通讯反馈报文头,API扩展使用
- resData:通讯反馈报文体,API扩展使用
- resInformation:文件信息
- type:文件类型
- size:文件大小
- date:文件最后更新时间(long类型)
var UpYun = require("node-for-upyun");
var upyun = new UpYun('userName','password','bucketName');
upyun.downloadFileToLocal('README.md.test','README.md1',function(err,resHeaders,resData){
assert.equal(200,err);
assert.equal(resInformation.type,'file');
assert.equal(resInformation.size,9);
assert.ok(resInformation.date);
});
####删除Cloud文件
deleteFile(uri,callback)
- uri:又拍云网络路径
- callback(err,resHeaders,resData):回调函数
- err:错误信息,正常返回200
- resHeaders:通讯反馈报文头,API扩展使用
- resData:通讯反馈报文体,API扩展使用
var UpYun = require("node-for-upyun");
var upyun = new UpYun('userName','password','bucketName');
upyun.deleteFile('README.md',function(err,resHeaders,resData){
assert.equal(200,err);
});
####创建Cloud文件夹
createDirectory(uri,callback)
- uri:又拍云网络路径
- callback(err,resHeaders,resData):回调函数
- err:错误信息,正常返回200
- resHeaders:通讯反馈报文头,API扩展使用
- resData:通讯反馈报文体,API扩展使用
var UpYun = require("node-for-upyun");
var upyun = new UpYun('userName','password','bucketName');
upyun.createDirectory('README/md',function(err,resHeaders,resData){
assert.equal(200,err);
upyun.options.clear();
});
由于创建文件夹操作会自动开启folder
开关,因此调用结束后需要执行upyun.options.clear()
或者upyun.options.headers.folder = false
关闭此选项。不同功能的并发操作时建议使用new UpYun()
,相同功能并发操作时使用相同实例可以提高性能。
####删除Cloud文件夹
removeDirectory(uri,callback)
- uri:又拍云网络路径
- callback(err,resHeaders,resData):回调函数
- err:错误信息,正常返回200
- resHeaders:通讯反馈报文头,API扩展使用
- resData:通讯反馈报文体,API扩展使用
var UpYun = require("node-for-upyun");
var upyun = new UpYun('userName','password','bucketName');
upyun.removeDirectory('README/md',function(err,resHeaders,resData){
assert.equal(200,err);
});
####获取Cloud目录文件列表信息
listStructure(uri,callback)
- uri:又拍云网络路径
- callback(err,resHeaders,resData,resInformations[{name,type,size,date}]):回调函数
- err:错误信息,正常返回200
- resHeaders:通讯反馈报文头,API扩展使用
- resData:通讯反馈报文体,API扩展使用
- resInformations:目录结构数组
- name:文件/目录名称
- type:N (文件),F (目录)
- size:文件/目录大小
- date:最后更新时间(long类型)
upyun.listStructure('README',function(err,resHeaders,resData,resInformations){
assert.equal(200,err);
assert.notEqual(resInformations.length,0);
assert.ok(resInformations[0].name);
assert.ok(resInformations[0].type);
assert.ok(resInformations[0].size);
assert.ok(resInformations[0].date);
});
####获取Cloud空间使用信息
listStructure(uri,callback)
- callback(err,resHeaders,resData):回调函数
- err:错误信息,正常返回200
- resHeaders:通讯反馈报文头,API扩展使用
- resData:空间使用情况(B为单位)
upyun.retrieveCloudUsage(function(err,resHeaders,resData){
assert.equal(200,err);
assert.notEqual(resData.length,0);
});
####图片上传附加信息
uploadImageFromStream(data,uri,callback)
- data:上传文件数据流
- uri:又拍云网络路径
- callback(err,resHeaders,resData,resInformation):回调函数
- err:错误信息,正常返回200
- resHeaders:通讯反馈报文头,API扩展使用
- resData:通讯反馈报文体,API扩展使用
- resInformation:附加信息
- width:图片宽度
- height:图片高度
- frames:图片帧数
- type:图片类型
var fs = require('fs');
var data = fs.readFileSync('image.png');
upyun.uploadImageFromLocal(data,'image1.png',function(err,resHeaders,resData,resInfomration){
assert.equal(96,resInfomration.width);
assert.equal(96,resInfomration.height);
assert.equal(1,resInfomration.frames);
assert.equal('PNG',resInfomration.type);
assert.equal(200,err);
});
uploadImageFromLocal(data,uri,callback)
- data:上传文件数据流
- uri:又拍云网络路径
- callback(err,resHeaders,resData,resInformation):回调函数
- err:错误信息,正常返回200
- resHeaders:通讯反馈报文头,API扩展使用
- resData:通讯反馈报文体,API扩展使用
- resInformation:附加信息
- width:图片宽度
- height:图片高度
- frames:图片帧数
- type:图片类型
upyun.uploadImageFromLocal('image.png','image1.png',function(err,resHeaders,resData,resInfomration){
assert.equal(96,resInfomration.width);
assert.equal(96,resInfomration.height);
assert.equal(1,resInfomration.frames);
assert.equal('PNG',resInfomration.type);
assert.equal(200,err);
});
####附加功能配置
切换连接服务器
upyun.options.domain = upyun.options.domain_CTCC;//切换为电信
upyun.options.domain = upyun.options.domain_CUCC;//切换为联通
upyun.options.domain = upyun.options.domain_CMCC;//切换为移动
清除附加功能配置痕迹
upyun.options.clear()
自动创建不存在的父级目录。最多允许创建 10 级目录(默认开启)
upyun.options.headers.mkdir = true;
手动修改上传文件类型
upyun.options.headers['Content-Type'] = 'SVG';
开启MD5校验
upyun.options.md5 = true;
#####图片附加功能配置
清除图片附加功能配置痕迹
upyun.options.imageClear();
限定宽度,高度自适应
upyun.options.imageFixWidth(width);
限定高度,宽度自适应
upyun.options.imageFixHeight(height);
限定宽度和高度,宽高不足时不缩放
upyun.options.imageFixWidthOrHeight(width,height);
固定宽度和高度,宽高不足时强行缩放
upyun.options.imageFixBoth(width,height);
限定最长边,短边自适应
upyun.options.imageFixMax(size);
限定最短边,长边自适应
upyun.options.imageFixMin(size);
等比例缩放(1-99)
upyun.options.imageFixScale(scale);
图片压缩质量,默认 95(1-100)
upyun.options.imageQuality(scale);
图片锐化,默认开启锐化
upyun.options.imageUnSharp();
自定义的缩略图版本名称,比如
small
需要在 UPYUN 管理平台创建好缩略图版本该缩略方式包含了所需的缩略参数,参数更简洁,使用更方便,建议使用
upyun.options.imageThumbnail();
是否保留原图的 EXIF 信息若原图带有 EXIF 信息并做缩略处理时,默认将删除 EXIF 信息
upyun.options.imageKeepExif();
图片旋转,默认参数为auto
只接受“auto”,“90”,“180”,“270”四种参数,其他参数都视为错误
upyun.options.imageRotate(type);
图片裁剪,默认参数为(0,0,0,0)
(x,y):左上角坐标;width:要裁剪的宽度;height:要裁剪的高度x >= 0 && y >=0 && width > 0 && height > 0 且必须是正整型
upyun.options.imageCrop(x,y,width,height);
###标准API错误代码表
| HTTP状态码 | 返回代码 | 描述 | | ------------ | ---------- | ---------- | | 400 | Bad Request | 错误请求(如 URL 缺少空间名) | | 401 | Unauthorized | 访问未授权 | | 401 | Sign error | 签名错误(操作员和密码,或签名格式错误) | | 401 | Need Date Header | 发起的请求缺少 Date 头信息 | | 401 | Date offset error | 发起请求的服务器时间错误,请检查服务器时间是否与世界时间一致| | 403 | Not Access | 权限错误(如非图片文件上传到图片空间)| | 403 | File size too max | 单个文件超出大小(100Mb 以内) | | 403 | Not a Picture File | 图片类空间错误码,非图片文件或图片文件格式错误。针对图片空间只允许上传 jpg/png/gif/bmp/tif 格式。| | 403 | Picture Size too max | 图片类空间错误码,图片尺寸太大。针对图片空间,图片总像素在 200000000 以内。| | 403 | Bucket full | 空间已用满 | | 403 | Bucket blocked | 空间被禁用,请联系管理员| | 403 | User blocked | 操作员被禁用| | 403 | Image Rotate Invalid Parameters | 图片旋转参数错误| | 403 | Image Crop Invalid Parameters | 图片裁剪参数错误| | 404 | Not Found | 获取文件或目录不存在;上传文件或目录时上级目录不存在| | 406 | Not Acceptable(path) | 目录错误(创建目录时已存在同名文件;或上传文件时存在同名目录)| | 503 | System Error | 系统错误 |
##TODO
#####https连接
#####HTTP基本认证
#####content-secret
更多资源,请关注:http://blog.huangchaosuper.cn