big-wheel / fileman-client

fileman sdk

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Fileman client

build status Test coverage NPM version NPM Downloads

一个迷你封装 from 一个小轮子 express-restful-fileman,用于方便管理静态的 sdk。 静态服务推荐使用另外一个小轮子 github-similar-server

使用

命令行

npm install -g fileman-client
fm -h

commonjs

npm install fileman-client -d
const FilemanClient = require('fileman-client')

const fm = FilemanClient({
  baseUrl, // 服务的基础路径,必填。如:'http://static.example.com/fileman/'
  token, // fileman 的 token
  cwd //
})

// 第一个参数为File类型,File类型在API中有说明
fm.pushImg('图片路径,或者是文件 Buffer').then(console.log, console.error)
// 如果为文件 Buffer,则默认拼接的上传文件名为 `YYYY/MM/DD/md5.ext`

API

SpecFile

util.js:69-108

Type: Object

Parameters

  • value {Buffer|string} - string 类型时表示 filename
  • path [string] 文件路径名,不填写时候,如果 value 为 Buffer,则为 md5(buffer).ext, 可以通过 mapBufferPath 设置 如果 value 为 string,则为 basename(value)

File

util.js:69-108

Type: (SpecFile | Buffer | string)

push

util.js:69-108

Parameters

  • file : {File[]|File}
  • options [{}]
    • options.baseUrl {string} - 拼接的 url 前缀
    • options.query [object] - 拼接在 url 之后的 query
    • options.cwd [string] - 解析 file[].path 中的绝对路径,变成相对路径
    • options.mapBufferPath [function] -

Returns Request

以下文档内容纯属瞎掰!待维护

如何使用

初始化

import * as fileman from 'fileman-sdk'
// token: 验证信息, ak,sk 有的话也在这初始化
// config: 一些乱七八糟别的配置,万一有什么拓展呢(上传自动重试次数,限制上传类型..
var client = new fileman(token, config)

上传

// file: Blob 对象,上传的文件(blob 对象 || <file path > node 环境 || dataurl ...)
// key: 文件资源名
// config (针对某特定资源的乱七八糟的配置?)
client.uploadFile(file, key, config)

/* 一些监听 */
var observer = {
  next(res) {
    //  提供上传进度信息
    // res.loaded(已上传大小)
    // res.total(本次上传的总量控制信息,注意这里的 total 跟文件大小并不一致)
    // res.percent(当前上传进度 0-100)
  },
  error(err) {
    // 上传错误后触发,xhr 请求错误,JSON 解析异常等,isRequestError,reqId,code,message
  },
  complete(res) {
    // ...
  }
}
// 开始上传
var subscription = observable.subscribe(observer)

// 取消上传
subscription.unsubscribe()

查询

client
  .listFiles(bucketName)
  .then(function(response) {
    var contents = response.body.contents
    for (var i = 0, l = contents.length; i < l; i++) {
      console.log(contents[i].key)
    }
  })
  .catch(function(error) {
    // 查询失败
  })

下载

// 暂时不支持断点吧,下载就整个下载了
client.getFile(BucketName, Key).then(function(response) {
  let buffer = response.body
})

删除

client.deleteFile(BucketName, Key)

FEATURE

About

fileman sdk

License:MIT License


Languages

Language:JavaScript 100.0%