一个迷你封装 from 一个小轮子 express-restful-fileman,用于方便管理静态的 sdk。 静态服务推荐使用另外一个小轮子 github-similar-server
npm install -g fileman-client
fm -h
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`
Type: Object
value
{Buffer|string} - string 类型时表示 filenamepath
[string] 文件路径名,不填写时候,如果 value 为 Buffer,则为md5(buffer).ext
, 可以通过 mapBufferPath 设置 如果 value 为 string,则为basename(value)
Type: (SpecFile | Buffer | string)
file
: {File[]|File}options
[{}]options.baseUrl
{string} - 拼接的 url 前缀options.query
[object] - 拼接在 url 之后的 queryoptions.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)