Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up

FastDFS nodejs client

NotificationsYou must be signed in to change notification settings

ymyang/fdfs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

63 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FastDFS 是分布式文件存储系统。这个项目是FastDFS的NodeJS客户端,用来与FastDFS Server进行交互,进行文件的相关操作。我测试过的server版本是4.0.6。

安装

npm install fdfs

使用

varFdfsClient=require('fdfs');varfdfs=newFdfsClient({// tracker serverstrackers:[{host:'tracker.fastdfs.com',port:22122}],// 默认超时时间10stimeout:10000,// 默认后缀// 当获取不到文件后缀时使用defaultExt:'txt',// charset默认utf8charset:'utf8'});

以上是一些基本配置,你还可以自定义你的日志输出工具,默认是使用console例如你要使用debug作为你的日志输出工具,你可以这么做:

vardebug=require('debug')('fdfs');varfdfs=newFdfsClient({// tracker serverstrackers:[{host:'tracker.fastdfs.com',port:22122}],logger:{log:debug}});

上传文件

注:以下fileId为group + '/' + filename,以下的所有操作使用的fileId都是一样

通过本地文件名上传

fdfs.upload('e:/shou.jpg').then(function(fileId){// fileId 为 group + '/' + filenameconsole.log(fileId);}).catch(function(err){console.error(err););

上传Buffer

varfs=require('fs');// 注意此处的buffer获取方式只为演示功能,实际不会这么去构建buffervarbuffer=fs.readFileSync('test.gif');fdfs.upload(buffer).then(function(fileId){// fileId 为 group + '/' + filenameconsole.log(fileId);}).catch(function(err){console.error(err););

ReadableStream

varfs=require('fs');varrs=fs.createReadStream('test.gif');fdfs.upload(rs).then(function(fileId){// fileId 为 group + '/' + filenameconsole.log(fileId);}).catch(function(err){console.error(err););

其他一些options,作为第2个参数传入

fdfs.upload('test.gif',{// 上传方法 [upload, uploadAppender, append, modify], 默认为uploadmethod:'upload',// 指定文件存储的group,不指定则由tracker server分配group:'group1',// method为append或modify指定追加的源文件fileId:'group1/M00/00/0F/wKgBeFXlZJuAdsBZAAPm5H9JxDA153.jpg',// file bytes, file参数为ReadableStream时必须指定size:1024,// method为modify指定追加的源文件的起始点offset:10240,// 上传文件的后缀,不指定则获取file参数的后缀,不含(.)ext:'jpg'}).then(function(fileId){// fileId 为 group + '/' + filenameconsole.log(fileId);}).catch(function(err){console.error(err););

下载文件

下载到本地

fdfs.download(fileId,'test_download.gif').then(function(){// 下载完成}).catch(function(err){console.error(err););

下载到WritableStream

varfs=require('fs');varws=fs.createWritableStream('test_download.gif');fdfs.download(fileId,ws).then(function(){// 下载完成}).catch(function(err){console.error(err););

下载文件片段

fdfs.download(fileId,{target:'test_download.part',offset:5,bytes:5}).then(function(){// 下载完成}).catch(function(err){console.error(err););

删除文件

fdfs.del(fileId).then(function(){// 删除成功}).catch(function(err){console.error(err););

获取文件信息

fdfs.getFileInfo(fileId).then(function(fileInfo){// fileInfo有4个属性// {//   // 文件大小//   size://   // 文件创建的时间戳,单位为秒//   timestamp://   // 校验和//   crc32://   // 最初上传到的storage server的ip//   addr:// }console.log(fileInfo);}).catch(function(err){console.error(err););

文件的Meta Data

设置Meta Data, 我只贴出来文件签名信息吧,flag字段如果不传则默认是O

/** *@param fileId *@param metaData  {key1: value1, key2: value2} *@param flag 'O' for overwrite all old metadata (default)                'M' for merge, insert when the meta item not exist, otherwise update it */fdfs.setMetaData(fileId,metaData,flag).then(function(){// 设置成功}).catch(function(err){console.error(err););

获取Meta Data

fdfs.getMetaData(fileId).then(function(metaData){console.log(metaData);}).catch(function(err){console.error(err););

group信息

fdfs.listGroups().then(function(groups){console.log(groups);}).catch(function(err){console.error(err););

storage信息

fdfs.listStorages(‘group1’).then(function(storages){console.log(storages);}).catch(function(err){console.error(err););

[8]ページ先頭

©2009-2025 Movatter.jp