-
注册,获取开发者账号:七牛云
-
创建空间
- 获取秘钥 AK 和 SK
- 基础配置
const qiniu = require('qiniu')
// 填写获取的秘钥
var accessKey = 'your access key';
var secretKey = 'your secret key';
var mac = new qiniu.auth.digest.Mac(accessKey, secretKey);
// 创建的空间名称
var options = {
scope: 'cloud-doc01',
};
var putPolicy = new qiniu.rs.PutPolicy(options);
var uploadToken = putPolicy.uploadToken(mac);
var config = new qiniu.conf.Config();
// 空间对应的机房(创建空间时选择的地区有关)
config.zone = qiniu.zone.Zone_z0;
- 文件上传
// 建议使用绝对路径,笔者使用相对会报错
var localFile = "C:/Users/DELL/Desktop/README.md";
var formUploader = new qiniu.form_up.FormUploader(config);
var putExtra = new qiniu.form_up.PutExtra();
// 上传之后的文件名称
var key = 'readme.md';
formUploader.putFile(uploadToken, key, localFile, putExtra, function (respErr,
respBody, respInfo) {
if (respErr) {
throw respErr;
}
if (respInfo.statusCode === 200) {
console.log(respBody);
} else {
console.log(respInfo.statusCode);
console.log(respBody);
}
});
- 文件下载
var bucketManager = new qiniu.rs.BucketManager(mac, config);
//
var publicBucketDomain = 'http://qnsepvhnj.hd-bkt.clouddn.com';
// 公开空间访问链接
var publicDownloadUrl = bucketManager.publicDownloadUrl(publicBucketDomain, key);
console.log(publicDownloadUrl);
- 文件管理(以删除文件为例)
bucketManager.delete(bucket, key, function(err, respBody, respInfo) {
if (err) {
console.log(err);
//throw err;
} else {
console.log(respInfo.statusCode);
console.log(respBody);
}
});
- 封装
将操作封装为类,以便于更好的编写
const qiniu = require('qiniu')
class QiniuManager {
constructor(accessKey, secretKey, bucket) {
this.mac = new qiniu.auth.digest.Mac(accessKey, secretKey);
this.bucket = bucket
this.config = new qiniu.conf.Config();
// 空间对应的机房
this.config.zone = qiniu.zone.Zone_z0;
this.bucketManager = new qiniu.rs.BucketManager(this.mac, this.config);
}
uploadFile(key, localFilePath) {
const options = {
scope: this.bucket + ':' + key,
};
const putPolicy = new qiniu.rs.PutPolicy(options);
const uploadToken = putPolicy.uploadToken(this.mac);
const formUploader = new qiniu.form_up.FormUploader(this.config);
const putExtra = new qiniu.form_up.PutExtra();
return new Promise((resolve, reject) => {
formUploader.putFile(uploadToken, key, localFilePath, putExtra, this._handleCallback(resolve, reject));
})
}
delteFile(key) {
return new Promise((resolve, reject) => {
this.bucketManager.delete(this.bucket, key, this._handleCallback(resolve, reject))
})
}
_handleCallback(resolve, reject) {
return (respErr, respBody, respInfo) => {
if (respErr) {
throw respErr;
}
if (respInfo.statusCode === 200) {
resolve(respBody);
} else {
reject({
statusCode: respInfo.statusCode,
body: respBody
})
}
}
}
}
module.exports = QiniuManager
使用的文件中
const qiniu = require('qiniu')
const QiniuManager = require('./utils/QiniuManager')
var accessKey = '';
var secretKey = '';
var localFile = "C:/Users/DELL/Desktop/README.md";
var key = 'readme.md';
const manager = new QiniuManager(accessKey, secretKey, 'cloud-doc01')
manager.uploadFile(key, localFile).then((data) => {
console.log('上传成功', data)
return manager.delteFile(key)
}).then((data) => {
console.log('删除成功')
})
// manager.delteFile(key)
var publicBucketDomain = 'http://qnsepvhnj.hd-bkt.clouddn.com';
关注公众号:大明贵妇,回复 node 获取 node 资料,期待各位客官来临