1.0.5 • Published 6 years ago
lyman-egg-full-qiniu v1.0.5
egg-full-qiniu
依赖
qiniu@7.2.1
安装
$ npm i egg-full-qiniu --save使用
// config/plugin.js
exports.fullQiniu = {
  enable: true,
  package: 'egg-full-qiniu',
};配置
// {app_root}/config/config.default.js
exports.fullQiniu = {
  default: {
    ak: '', // Access Key
    sk: '', // Secret Key
    useCdnDomain: true,
    isLog: true,
  },
  app: true,
  agent: false,
  // 单实例
  // 通过 app.fullQiniu 直接使用实例
  // client: {
  //     zone: '', // Zone_z0 华东, Zone_z1 华北, Zone_z2 华南, Zone_na0 北美
  //     bucket: '',
  //     baseUrl: null, // 用于拼接已上传文件的完整地址
  // }
  // 多实例
  // clients: {
  //     // 可以通过 app.fullQiniu.get('myImage'), app.fullQiniu.get('myText') 获取实例
  //     myImage: {
  //         zone: '', // Zone_z0 华东, Zone_z1 华北, Zone_z2 华南, Zone_na0 北美
  //         bucket: '',
  //     baseUrl: null, // 用于拼接已上传文件的完整地址
  //     },
  //     myText: {
  //         zone: '', // Zone_z0 华东, Zone_z1 华北, Zone_z2 华南, Zone_na0 北美
  //         bucket: '',
  //     baseUrl: null, // 用于拼接已上传文件的完整地址
  //     },
  // },
};请到 config/config.default.js 查看详细配置项说明。
使用
- 通过app.fullQiniu调用函数,在配置文件中已经固定bucket
- 在多实例中进行move,copy时,可以通过getBucket()获取本实例的bucket值
- 单实例中: - app.fullQiniu.uploadFile(key, file);
- 多实例中 - const image = app.fullQiniu.get('myImage'); const imageBak = app.fullQiniu.get('myImageBak'); const result = image.copy('p1.png', imageBak.getBucket(), 'p1_bak.png', true);
API
- uploadFile(key, file) - 上传本地文件到空间中 @param key: 目标文件名 @param file: 本地文件路径 @return { "ok": true | false, "err": 当 ok 为 false 时 "url": 可访问的完整链接 "hash" "key" }
- uploadBytes(key, bytes) - 将内存中的字节数组上传到空间中 @param key: 目标文件名 @param bytes: 内存中的字节数组 @return { "ok": true | false, "err": 当 ok 为 false 时 "url": 可访问的完整链接 "hash" "key" }
- uploadStream(key, stream) - 将客户端传送来的流上传到空间中 @param key: 目标文件名 @param stream: 文件流 @return { "ok": true | false, "err": 当 ok 为 false 时 "url": 可访问的完整链接 "hash" "key" }
- fileInfo(key) - 获取文件信息 @param key: 在空间中的文件名 @return { "ok": true | false, "err": 当 ok 为 false 时 "fsize": 198568, "hash": "FhfDDtTkyR02fXq87bdlvJd-2HlH", "md5": "no0Hr/mBDGU/sMHNbuf05w==", "mimeType": "image/jpeg", "putTime": 15435661202597688, "type": 0, // 0 普通存储, 1 低频存储 }
- changeType(key, newType) - 修改文件存储类型 @param key: 在空间中的文件名 @param newType: 0 普通存储, 1 低频存储 @return { "ok": true | false, "err": 当 ok 为 false 时 }
- move(srcKey, destBucket, destKey, isForce = false) - 移动或者重命名文件 @param srcKey: 在源空间中的文件名 @param destBucket: 目标空间 @param destKey: 在目标空间中的文件名 @param isForce: true, 强制覆盖已有同名文件 @return { "ok": true | false, "err": 当 ok 为 false 时 }
- copy(srcKey, destBucket, destKey, isForce = false) - 复制文件 @param srcKey: 在源空间中的文件名 @param destBucket: 目标空间 @param destKey: 在目标空间中的文件名 @param isForce: true, 强制覆盖已有同名文件 @return { "ok": true | false, "err": 当 ok 为 false 时 }
- delete(key) - 删除文件 @param key: 在空间中的文件名 @return { "ok": true | false, "err": 当 ok 为 false 时 }
- deleteAfterDays(key, days) - 设置或更新文件的生存时间 @param key: 在空间中的文件名 @param days: 有效期天数 @return { "ok": true | false, "err": 当 ok 为 false 时 }
- listPrefix({ prefix, marker, limit, delimiter }) - 获取指定前缀的文件列表 @param { prefix: 列举的文件前缀,比如 images- marker: 上一次列举返回的位置标记,作为本次列举的起点信息 limit: 每次返回的最大列举文件数量 delimiter: 指定目录分隔符 } @return { "ok": true | false, "err": 当 ok 为 false 时 "marker": "eyJxxxx==", "items": [{ "key": "image-xxxx1.jpg", "hash": "FhfDDtTkyR02fXq87bdlvJd-xxxx", "fsize": 198568, "mimeType": "image/jpeg", "putTime": 15435714374444728, "type": 0, "status": 0 }, { "key": "image-xxxx2.jpeg", "hash": "Frk2EdYeI1i-beHzLSMA_xxx", "fsize": 5467, "mimeType": "image/jpeg", "putTime": 15435714197909564, "type": 0, "status": 0 }] } 备注: prefix='image-', limit=2
- fetch(url, key) - 抓取网络资源存放到到空间 @param url: 资源链接 @param key: 存放到空间时的文件名称 @return { "ok": true | false, "err": 当 ok 为 false 时 "fsize": 22827, "hash": "Fu4uwAc4LCdmVMzgLKs5EdKLCJMT", "key": "fetch_xxx.jpg", "mimeType": "image/jpeg" }
- batchFileInfo(url, key) - 批量获取文件信息 数量不可以超过1000个,如果总数量超过1000,需要分批发送 @param files: 文件名集合, ['', '', ...] @return { "ok": true | false, "err": 当 ok 为 false 时 "list": [{ "code": 200, "data": { "fsize": 22827, "hash": "Fu4uwAc4LCdmVMzgLKs5EdKLCJMT", "md5": "ahWerXWV0Co3Yqujwi4pEw==", "mimeType": "image/jpeg", "putTime": 15435720064197850, "type": 0 } }, { "code": 200, "data": { "fsize": 198568, "hash": "FhfDDtTkyR02fXq87bdlvJd-2HlH", "md5": "no0Hr/mBDGU/sMHNbuf05w==", "mimeType": "image/jpeg", "putTime": 15435714374444728, "type": 0 } }] }
- batchDelete(files) - 批量删除文件 数量不可以超过1000个,如果总数量超过1000,需要分批发送 @param files: 文件名集合, ['', '', ...] @return { "ok": true | false, "err": 当 ok 为 false 时 "list": [{ "code": 200 }, { "code": 200 }] }
- refreshUrls(urls) - CDN 文件刷新 单次请求链接不可以超过100个,如果超过,请分批发送请求 @param urls: 完整链接的集合, ['', '', ...] @return { "ok": true | false, "err": 当 ok 为 false 时 "code": 200, "error": "success", "requestId": "5c0110fe43d7231d08abe16c", "taskIds": { "http://imagecdn.xxxx.cn/image-xxx1.jpeg": "5c0110fe43d7231d08xxxx", "http://imagecdn.xxxx.cn/image-xxx2.jpg": "5c0110fe43d7231d08xxxx" }, "invalidUrls": null, "invalidDirs": null, "urlQuotaDay": 500, "urlSurplusDay": 496, "dirQuotaDay": 10, "dirSurplusDay": 10 }
- prefetchUrls(urls) - CDN 文件预取 单次请求链接不可以超过100个,如果超过,请分批发送请求 @param urls: 完整链接的集合, ['', '', ...] @return { "ok": true | false, "err": 当 ok 为 false 时 "code": 200, "error": "success", "requestId": "5c011212ae4f843390abaa57", "taskIds": { "http://imagecdn.xxxx.cn/image-xxxx1.jpeg": "5c011212ae4f843390xxxx", "http://imagecdn.xxxx.cn/image-xxxx2.jpg": "5c011212ae4f843390xxxx" }, "invalidUrls": null, "quotaDay": 100, "surplusDay": 98 }
License
1.0.5
6 years ago