http://www.xiaoyenzi.com

IPFS文件API


常规API

IPFS上的add,cat,get和ls文件的常规顶级API
  • addFromFs
  • addFromStream
  • addFromURL
  • addPullStream
  • addReadableStream
  • catPullStream
  • catReadableStream
  • 得到
  • getPullStream
  • getReadableStream
  • LS
  • lsPullStream
  • lsReadableStream

Files API

Files API,又名MFS(可变文件系统)
在我们的ProtoSchool教程中通过交互式编码挑战探索Mutable文件系统。
  • files.cp
  • files.flush
  • files.ls
  • files.lsReadableStream
  • files.lsPullStream
  • files.mkdir
  • files.mv
  • files.read
  • files.readPullStream
  • files.readReadableStream
  • files.rm
  • files.stat
  • files.write

add

将文件和数据添加到IPFS。
ipfs.add(data, [options], [callback])
哪里data可能是:
  • 一个 Buffer instance
  • 一个 Readable Stream
  • 一个 Pull Stream
  • 一个 File
  • 一个对象数组,每个形式:
{
  path : '/ tmp / myfile.txt ',//文件路径 
  内容: < data >  //缓冲区,可读流,拉流或带文件内容的文件 
}
如果未content传递,则将该路径视为空目录
options 是一个可选的对象参数,可能包含以下键:
  • chunker(string,default size-262144):用于构建ipfs DAG的分块算法。可用格式:
    • 大小 - {}大小
    • 拉宾
    • rabin- {}平均
    • rabin- {分钟} - {平均} - {max}个
  • cidVersion(整数,默认为0):存储数据时使用的CID版本(存储密钥基于CID,包括其版本)。
  • cidBase(string,default base58btc):显示CID的数字基数。所有可能值的列表。
  • enableShardingExperiment:允许创建具有无限数量条目的目录,当前unixfs目录的大小受最大块大小的限制。请注意,这是一个实验性功能。
  • hashAlg || hash(string,default sha2-256):要使用的multihash哈希算法。所有可能值的列表。
  • onlyHash(boolean,default false):实际上并不是将文件添加到IPFS,而是计算其哈希值。
  • pin(boolean,默认为true):添加时固定此对象。
  • 进度(函数):一个函数将以块的字节长度调用,作为文件添加到ipfs。
  • quiet(布尔值,默认值false):写入最小输出。
  • quieter(boolean,default false):只写最终哈希。
  • rawLeaves(boolean,default false):如果为true,则DAG leaves将包含原始文件数据,而不是包含在protobuf中。
  • recursive(boolean,default false):对于传递Path时,可以启用此选项以递归方式添加所有文件。
  • shardSplitThreshold(integer,default 1000):指定可以生成的unsharded目录的最大大小。
  • silent(布尔值,默认值false):不写入输出。
  • trickle(boolean,default false):如果为true,则使用涓流DAG格式进行DAG生成。 来自go-ipfs文档的涓流定义。
  • wrapWithDirectory(boolean,default false):在内容周围添加一个包装节点。
callback必须遵循function (err, res) {}签名,err如果操作不成功,则出错。res将是一个数组:
{
  路径: '/ tmp / myfile.txt ',
  hash : ' QmHash ',// base58编码的multihash 
  大小: 123 
}
如果未callback通过,则返回承诺。
例:
在浏览器中,假设ipfs = new Ipfs(...)
const  content  =  Ipfs。缓冲区。from(' ABC ')
 const  results  =  await  ipfs。add(content)
 const  hash  = results [ 0 ]。哈希 // “Qm ...... WW”
现在ipfs.io/ipfs/Qm...WW 返回“ABC”字符串。
以下允许您一次添加多个文件。请注意,文件路径中的中间目录将自动创建并在响应中与文件一起返回:
const  文件 = [
  {
    路径: '/ tmp / myfile.txt ',
    内容:  Ipfs。缓冲区。来自(' ABC ')
  }
]

const  results  =  await  ipfs。添加(文件)
results数组:
[
  {
    “ path ”: “ tmp ”,
     “ hash ”: “ QmWXdjNC362aPDtwHPUE9o2VMqPeNeCQuTBTv1NsKtwypg ”,
     “ size ”: 67
  },
  {
    “路径”: “ /tmp/myfile.txt ”,
     “散列”: “ QmNz1UBzpdd4HfZ3qir3aPiRdX5a93XwTuDNyXRc6PKhWW ”,
     “大小”: 11
  }
]
在此API的测试中可以找到很好的示例来源。

addReadableStream

使用可读类双工流将文件和数据添加到IPFS 。
ipfs.addReadableStream([options])- > 可读流
返回类Duplex的可读流,其中可以写入表单的对象
{
  path : '/ tmp / myfile.txt ',//文件路径 
  内容: < data >  //缓冲区,可读流,拉流或带文件内容的文件 
}
options 是一个可选的对象参数,可能包含以下键:
  • cidVersion(整数,默认为0):存储数据时使用的CID版本(存储密钥基于CID,包括其版本)
  • 进度(函数):一个函数将以块的字节长度调用,作为文件添加到ipfs。
  • hashAlg || hash(string):要使用的multihash哈希算法。(默认:sha2-256)所有可能的值的列表
  • wrapWithDirectory(boolean):在内容周围添加一个包装节点
  • pin(boolean,默认为true):添加时固定此对象。
例:
const  stream  =  ipfs。addReadableStream()
 流。on(' data ',function(file){
   // 'file'的格式为
  // { 
  // path:' 
  / tmp / myfile.txt' ,// hash:'QmHash'// base58 encoded multihash 
  / / size:123 
  // }
})

流。写({
  path : < path > 
  content : < data >
})
//根据需要编写多个文件

流。结束()
})
在此API的测试中可以找到很好的示例来源。

addPullStream

使用Pull Stream将文件和数据添加到IPFS 。
ipfs.addPullStream([options])- > 拉流
返回一个Pull Stream,其中可以写入表单的对象
{
  path : '/ tmp / myfile.txt ',//文件路径 
  内容: < data >  //缓冲区,可读流,拉流或带文件内容的文件 
}
options 是一个可选的对象参数,可能包含以下键:
  • cidVersion(整数,默认为0):存储数据时使用的CID版本(存储密钥基于CID,包括其版本)
  • 进度(函数):一个函数将以块的字节长度调用,作为文件添加到ipfs。
  • hashAlg || hash(string):要使用的multihash哈希算法。(默认:sha2-256)所有可能的值的列表
  • wrapWithDirectory(boolean):在内容周围添加一个包装节点
  • pin(boolean,默认为true):添加时固定此对象。
例:
const  stream  =  ipfs。addPullStream()

拉(
   拉。值([
    {path : < path >,content : < data > }
  ]),
  流,
  拉。collect((err,values)=> {
     // values将是一个对象数组,其中一个形式是
    // { 
    // path 
     :'/ tmp / myfile.txt' ,// hash:'QmHash'// base58编码multihash 
    // 大小:123 
    // }
  })
)

addFromFs

将文件或整个目录从FileSystem添加到IPFS
ipfs.addFromFs(path, [options], [callback])
path文件系统读取文件或文件夹并将其添加到IPFS。
选项:
  • recursive:如果path是目录,请使用选项{ recursive: true }添加目录及其所有子目录。
  • 忽略:要从目录中排除文件globs,请使用option { ignore: ['ignore/this/folder/**', 'and/this/file'] }
  • 隐藏:隐藏/点文件(.例如,以a开头的文件或文件夹.git/)默认情况下不包含在内。要添加它们,请使用该选项{ hidden: true }
ipfs。addFromFs(' path / to / a / folder ',{recursive : true,ignore : [ ' subfolder / to / ignore / ** ' ]},(err,result)=> {
   if(err){ throw err}
   console。日志(结果)
})
result 是描述添加的文件的对象数组,例如:
[
  {
    路径: ' test-folder ',
    hash : ' QmRNjDeKStKGTQXnJ2NFqeQ9oW23WcpbmvCVrpDHgDg3T6 ',
    大小: 2278
  },
  // ... 
]

addFromURL

将URL中的文件添加到IPFS
ipfs.addFromURL(url, [callback])
ipfs。addFromURL(' http://example.com/ ',(err,result)=> {
   if(err){
     throw err
  }
  控制台。记录(结果)
})

addFromStream

将流中的文件添加到IPFS
ipfs.addFromStream(stream, [callback])
这非常相似ipfs.add({ path:'', content: stream })。这就像猫的逆转。
ipfs。addFromStream(< readable - stream >,(err,result)=> {
   if(err){
     throw err
  }
  控制台。记录(结果)
})

cat

返回由有效IPFS路径寻址的文件。
ipfs.cat(ipfsPath, [options], [callback])
ipfsPath 可以是类型:
  • cid 类型:
    • 一个CID实例
    • 缓冲区,cid的原始缓冲区
    • String,cid的base58编码版本
  • 字符串,包括ipfs处理程序,cid和遍历的路径,即:
  • '/ IPF问题/ QmXEmhrMpbVvTh61FNAxP9nU7ygVtyvZA8HZDUaqQCAb66'
  • '/ipfs/QmXEmhrMpbVvTh61FNAxP9nU7ygVtyvZA8HZDUaqQCAb66/a.txt'
  • 'QmXEmhrMpbVvTh61FNAxP9nU7ygVtyvZA8HZDUaqQCAb66 / A.TXT'
options 是一个可选对象,可能包含以下键:
  • offset 是一个可选的字节偏移量,用于启动流
  • length 是从流中读取的可选字节数
callback必须遵循function (err, file) {}签名,err如果操作不成功并且file是缓冲区则在哪里出错
如果未callback通过,则返回承诺。
例:
ipfs。cat(ipfsPath,function(err,file){
   if(err){
     throw err
  }

  控制台。日志(档案。的toString(' utf-8 '))
})
在此API的测试中可以找到很好的示例来源。

catReadableStream

返回包含由有效IPFS路径寻址的文件内容的可读流。
ipfs.catReadableStream(ipfsPath, [options])- > 可读流
ipfsPath 可以是类型:
  • cid 类型:
    • 一个CID实例
    • 缓冲区,cid的原始缓冲区
    • String,cid的base58编码版本
  • 字符串,包括ipfs处理程序,cid和遍历的路径,即:
  • '/ IPF问题/ QmXEmhrMpbVvTh61FNAxP9nU7ygVtyvZA8HZDUaqQCAb66'
  • '/ipfs/QmXEmhrMpbVvTh61FNAxP9nU7ygVtyvZA8HZDUaqQCAb66/a.txt'
  • 'QmXEmhrMpbVvTh61FNAxP9nU7ygVtyvZA8HZDUaqQCAb66 / A.TXT'
options 是一个可选对象,可能包含以下键:
  • offset 是一个可选的字节偏移量,用于启动流
  • length 是从流中读取的可选字节数
返回包含文件内容的可读流。
const  stream  =  ipfs。catReadableStream(ipfsPath)
 // stream将是一个包含所请求文件数据的流
在此API的测试中可以找到很好的示例来源。

catPullStream

返回包含由有效IPFS路径寻址的文件内容的Pull Stream。
ipfs.catPullStream(ipfsPath, [options])- > 拉流
ipfsPath 可以是类型:
  • cid 类型:
    • 缓冲区,cid的原始缓冲区
    • String,cid的base58编码版本
  • 字符串,包括ipfs处理程序,cid和遍历的路径,即:
  • '/ IPF问题/ QmXEmhrMpbVvTh61FNAxP9nU7ygVtyvZA8HZDUaqQCAb66'
  • '/ipfs/QmXEmhrMpbVvTh61FNAxP9nU7ygVtyvZA8HZDUaqQCAb66/a.txt'
  • 'QmXEmhrMpbVvTh61FNAxP9nU7ygVtyvZA8HZDUaqQCAb66 / A.TXT'
options 是一个可选对象,可能包含以下键:
  • offset 是一个可选的字节偏移量,用于启动流
  • length 是从流中读取的可选字节数
返回包含文件内容的Pull Stream。
const  stream  =  ipfs。catPullStream(ipfsPath)
 // stream将是一个包含所请求文件数据的流 
})
在此API的测试中可以找到很好的示例来源。

get

从IPFS获取由有效IPFS路径寻址的文件或整个目录树。
ipfs.get(ipfsPath, [callback])
ipfsPath可以是以下类型:
  • cid 类型:
    • 缓冲区,cid的原始缓冲区
    • String,cid的base58编码版本
  • 字符串,包括ipfs处理程序,cid和遍历的路径,即:
  • '/ IPF问题/ QmXEmhrMpbVvTh61FNAxP9nU7ygVtyvZA8HZDUaqQCAb66'
  • '/ipfs/QmXEmhrMpbVvTh61FNAxP9nU7ygVtyvZA8HZDUaqQCAb66/a.txt'
  • 'QmXEmhrMpbVvTh61FNAxP9nU7ygVtyvZA8HZDUaqQCAb66 / A.TXT'
callback必须遵循function (err, files) {}签名,err如果操作不成功,则出错。files是包含以下形式的对象的数组:
{
  路径: '/ tmp / myfile.txt ',
  内容: <作为缓冲区的数据> 
}
这里,每个path对应于文件的名称,并且content是具有该文件的原始内容的常规可读流。
如果未callback通过,则返回承诺。
例:
const  validCID  =  ' QmQ2r6iMNpky5f1m4cnm3Yqw8VSvjuKpTcK1X7dBR1LkJF '

ipfs。得到(validCID,功能(ERR,文件){
   文件。的forEach((文件)=> {
     控制台。日志(文件。路径)
     的控制台。日志(文件,内容。的toString(' utf-8 '))
  })
})
在此API的测试中可以找到很好的示例来源。

getReadableStream

从IPFS获取由有效IPFS路径寻址的文件或整个目录树。这些文件将作为可读流产生。
ipfs.getReadableStream(ipfsPath)- > 可读流
ipfsPath可以是以下类型:
  • cid 类型:
    • 缓冲区,cid的原始缓冲区
    • String,cid的base58编码版本
  • 字符串,包括ipfs处理程序,cid和遍历的路径,即:
  • '/ IPF问题/ QmXEmhrMpbVvTh61FNAxP9nU7ygVtyvZA8HZDUaqQCAb66'
  • '/ipfs/QmXEmhrMpbVvTh61FNAxP9nU7ygVtyvZA8HZDUaqQCAb66/a.txt'
  • 'QmXEmhrMpbVvTh61FNAxP9nU7ygVtyvZA8HZDUaqQCAb66 / A.TXT'
它以对象模式返回一个可读流,它将生成以下形式的对象:
{
  路径: '/ tmp / myfile.txt ',
  内容: <可读流> 
}
例:
const  validCID  =  ' QmYwAPJzv5CZsnA625s3Xf2nemtYgPpHdWEz79ojWnPbdG '

const  stream  =  ipfs。getReadableStream(validCID)

流。在(“数据”,(文件)=> {
   //写入文件的路径和内容到标准输出
  控制台。日志(文件。路径)
   ,如果(文件。键入 !==  “目录”){
     文件。内容。在('数据',(数据)=> {
       控制台。日志(数据。toString())
    })
    档案。内容。简历()
  }
})
在此API的测试中可以找到很好的示例来源。

getPullStream

从IPFS获取由有效IPFS路径寻址的文件或整个目录树。这些文件将作为可读流产生。
ipfs.getPullStream(ipfsPath)- > 拉流
ipfsPath可以是以下类型:
  • cid 类型:
    • 缓冲区,cid的原始缓冲区
    • String,cid的base58编码版本
  • 字符串,包括ipfs处理程序,cid和遍历的路径,即:
  • '/ IPF问题/ QmXEmhrMpbVvTh61FNAxP9nU7ygVtyvZA8HZDUaqQCAb66'
  • '/ipfs/QmXEmhrMpbVvTh61FNAxP9nU7ygVtyvZA8HZDUaqQCAb66/a.txt'
  • 'QmXEmhrMpbVvTh61FNAxP9nU7ygVtyvZA8HZDUaqQCAb66 / A.TXT'
它返回一个[Pull Stream] [os],它将产生以下形式的对象:
{
  路径: '/ tmp / myfile.txt ',
  内容: <拉流> 
}
例:
const  validCID  =  ' QmQ2r6iMNpky5f1m4cnm3Yqw8VSvjuKpTcK1X7dBR1LkJF '

const  stream  =  ipfs。getReadableStream(validCID)

拉(
  流,
  拉。collect((错误,文件)=> {
     if(错误){
       throw err
    }

    文件。的forEach((文件)=> {
       控制台。日志(文件。路径)
       控制台。日志(文件。路径。的toString())
    })
  })
)
在此API的测试中可以找到很好的示例来源。

ls

列出IPFS中由有效IPFS路径寻址的目录。
ipfs.ls(ipfsPath, [callback])
注意: ipfs.files.ls目前仅适用于MFS目录。目标是融合两种功能。
ipfsPath可以是以下类型:
  • cid 类型:
    • 缓冲区,cid的原始缓冲区
    • String,cid的base58编码版本
  • 字符串,包括ipfs处理程序,cid和遍历的路径,即:
  • '/ IPF问题/ QmXEmhrMpbVvTh61FNAxP9nU7ygVtyvZA8HZDUaqQCAb66'
  • '/ipfs/QmXEmhrMpbVvTh61FNAxP9nU7ygVtyvZA8HZDUaqQCAb66/a.txt'
  • 'QmXEmhrMpbVvTh61FNAxP9nU7ygVtyvZA8HZDUaqQCAb66 / A.TXT'
callback必须遵循function (err, files) {}签名,err如果操作不成功,则出错。files是包含以下形式的对象的数组:
{
  深度: 1,
  名称: ' alice.txt ',
  路径: ' QmVvjDy7yF7hdnqE8Hrf4MHo5ABDtb5AbX6hWbD3Y42bXP / alice.txt ',
  大小: 11696,
  哈希: ' QmZyUEQVuRK3XV7L9Dk26pg6RVSgaYkiSTEdnT2kZZdwoi ',
  输入: ' file ' 
}
如果未callback通过,则返回承诺。
例:
const  validCID  =  ' QmQ2r6iMNpky5f1m4cnm3Yqw8VSvjuKpTcK1X7dBR1LkJF '

ipfs。LS(validCID,函数(ERR,文件){
   文件。的forEach((文件)=> {
     控制台。日志(文件。路径)
  })
})
在此API的测试中可以找到很好的示例来源。

lsReadableStream

列出IPFS中由有效IPFS路径寻址的目录。该列表将作为可读流产生。
ipfs.lsReadableStream(ipfsPath)- > 可读流
注意: ipfs.files.ls目前仅适用于MFS目录。目标是融合两种功能。
ipfsPath可以是以下类型:
  • cid 类型:
    • 缓冲区,cid的原始缓冲区
    • String,cid的base58编码版本
  • 字符串,包括ipfs处理程序,cid和遍历的路径,即:
  • '/ IPF问题/ QmXEmhrMpbVvTh61FNAxP9nU7ygVtyvZA8HZDUaqQCAb66'
  • '/ipfs/QmXEmhrMpbVvTh61FNAxP9nU7ygVtyvZA8HZDUaqQCAb66/a.txt'
  • 'QmXEmhrMpbVvTh61FNAxP9nU7ygVtyvZA8HZDUaqQCAb66 / A.TXT'
它以对象模式返回一个可读流,它将生成以下形式的对象:
{
  深度: 1,
  名称: ' alice.txt ',
  路径: ' QmVvjDy7yF7hdnqE8Hrf4MHo5ABDtb5AbX6hWbD3Y42bXP / alice.txt ',
  大小: 11696,
  哈希: ' QmZyUEQVuRK3XV7L9Dk26pg6RVSgaYkiSTEdnT2kZZdwoi ',
  输入: ' file ' 
}
例:
const  validCID  =  ' QmQ2r6iMNpky5f1m4cnm3Yqw8VSvjuKpTcK1X7dBR1LkJF '

const  stream  =  ipfs。lsReadableStream(validCID)

流。上(“数据”,(文件)=> {
   //写入该文件的路径和内容标准输出
  控制台。日志(文件。路径)
})
在此API的测试中可以找到很好的示例来源。

lsPullStream

从IPFS获取由有效IPFS路径寻址的文件或整个目录树。这些文件将通过Pull Stream产生。
ipfs.lsPullStream(ipfsPath)- > 拉流
注意: ipfs.files.ls目前仅适用于MFS目录。目标是融合两种功能。
ipfsPath可以是以下类型:
  • cid 类型:
    • 缓冲区,cid的原始缓冲区
    • String,cid的base58编码版本
  • 字符串,包括ipfs处理程序,cid和遍历的路径,即:
  • '/ IPF问题/ QmXEmhrMpbVvTh61FNAxP9nU7ygVtyvZA8HZDUaqQCAb66'
  • '/ipfs/QmXEmhrMpbVvTh61FNAxP9nU7ygVtyvZA8HZDUaqQCAb66/a.txt'
  • 'QmXEmhrMpbVvTh61FNAxP9nU7ygVtyvZA8HZDUaqQCAb66 / A.TXT'
它返回一个[Pull Stream] [os],它将产生以下形式的对象:
{
  深度: 1,
  名称: ' alice.txt ',
  路径: ' QmVvjDy7yF7hdnqE8Hrf4MHo5ABDtb5AbX6hWbD3Y42bXP / alice.txt ',
  大小: 11696,
  哈希: ' QmZyUEQVuRK3XV7L9Dk26pg6RVSgaYkiSTEdnT2kZZdwoi ',
  输入: ' file ' 
}
例:
const  validCID  =  ' QmQ2r6iMNpky5f1m4cnm3Yqw8VSvjuKpTcK1X7dBR1LkJF '

const  stream  =  ipfs。lsPullStream(validCID)

拉(
  流,
  拉。collect((错误,文件)=> {
     if(错误){
       throw err
    }

    文件。的forEach((文件)=>  控制台。日志(文件。路径))
  })
)
在此API的测试中可以找到很好的示例来源。


Files API又称MFS(可变文件系统)

可变文件系统(MFS)是一个位于IPFS之上的虚拟文件系统,它通过虚拟目录公开类似Unix的API。它使用户能够从路径写入和读取,而无需担心更新图形。它允许像ipfs-blob-store这样的东西存在。

files.cp

复制文件。
ipfs.files.cp(...from, to, [options], [callback])
哪里:
  • from是要复制的源的路径。有可能:
    • 现有的文件或目录的MFS路径(例如/my-dir/my-file.txt
    • IPFS路径(例如/ipfs/QmWGeRAEgtsHW3ec7U4qW2CyVy7eA2mFRVbk1nb24jFyks
  • to 是要复制到的目标的路径
  • options 是一个可选的Object,可能包含以下键:
  • parents 是一个布尔值,用于决定是否在不存在的情况下创建父目录(默认值:false)
  • format是节点写入任何新创建的目录,什么类型(默认值:dag-pb
  • hashAlg是为新创建的目录创建CID时使用的算法。(默认:sha2-256)所有可能的值的列表
  • flush 是一个布尔值,用于决定是否立即将MFS更改刷新到磁盘(默认值:true)
  • callback是带签名的可选函数,如果操作不成功function (error) {},则error可能出现错误
如果from有多个值,则to必须是目录。
如果from有一个值并且to存在并且是一个目录,from则将被复制到to
如果from有一个值且to存在并且是文件,则from必须是文件,并且内容to将被替换为内容,from否则将返回错误。
如果from是IPFS路径,并且存在具有相同名称的MFS路径,则将选择IPFS路径。
如果未callback通过,则返回承诺。
例:
//复制文件
ipfs。文件。CP( ' / SRC-文件', ' / DST-文件',( ERR) => {
  如果(ERR){
    控制台。错误(ERR)
  }
})

//复制目录
ipfs。文件。CP( ' / SRC-DIR ', ' / DST-DIR ',( ERR) => {
  如果(ERR){
    控制台。错误(ERR)
  }
})

//将多个文件复制到目录
ipfs。文件。CP( ' / SRC-file1的', ' / SRC-file2的', ' / DST-DIR ',( ERR) => {
  如果(ERR){
    控制台。错误(ERR)
  }
})

files.mkdir

制作一个目录。
ipfs.files.mkdir(path, [options], [callback])
哪里:
  • path 是要创建的目录的路径
  • options 是一个可选的Object,可能包含以下键:
    • parents 是一个布尔值,用于决定是否在不存在的情况下创建父目录(默认值:false)
    • format是节点写入任何新创建的目录,什么类型(默认值:dag-pb
    • hashAlg是使用哪种算法创建新创建目录的CID时(默认:sha2-256)所有可能的值的列表
    • flush 是一个布尔值,用于决定是否立即将MFS更改刷新到磁盘(默认值:true)
  • callback是带签名的可选函数,如果操作不成功function (error) {},则error可能出现错误
如果未callback通过,则返回承诺。
例:
ipfs。文件。MKDIR(' /我的/漂亮/目录',(ERR)=> {
   如果(ERR){
     控制台。错误(ERR)
  }
})

files.stat

获取文件或目录状态。
ipfs.files.stat(path, [options], [callback])
哪里:
  • path 是stat的文件或目录的路径
  • options 是一个可选的Object,可能包含以下键:
    • hash 是一个布尔值,只返回哈希值(默认值:false)
    • size 是一个布尔值,只返回大小(默认值:false)
    • withLocal 是一个布尔值,用于计算本地dag的数量,如果可能的话,计算总大小(默认值:false)
    • cidBase是用来格式散列哪个号码基-例如base32base64等(默认值:base58btc
  • callback是与签名的可选功能function (error, stats) {},在这里error可以是如果该操作不成功,并且发生错误stats是使用下列按键对象:
  • hash 是一个带有哈希的字符串
  • size 是一个整数,文件大小以字节为单位
  • cumulativeSize 是一个整数,其大小以构成文件的DAGNodes的字节为单位
  • type是一个字符串,可以是directoryfile
  • blocks如果typedirectory,这是目录中的文件数。如果是,file则是构成文件的块数
  • withLocality 是一个布尔值,用于指示是否存在位置信息
  • local 是一个布尔值,用于指示查询的dag是否完全存在于本地
  • sizeLocal 是一个整数,表示本地存在的数据的累积大小
如果未callback通过,则返回承诺。
例:
ipfs。文件。STAT(' /file.txt ',(ERR,统计)=> {
   控制台。日志(统计)
})

// { 
// hash:'QmXmJBmnYqXVuicUfn9uDCC8kxCEEzQpsAbeq1iJvLAmVs',
// size:60,
// cumulativeSize:118,
// blocks:1,
// type:'file' 
// }

files.rm

删除文件或目录。
ipfs.files.rm(...paths, [options], [callback])
哪里:
  • paths 是一个或多个要删除的路径
  • options 是一个可选的Object,可能包含以下键:
    • recursive 是一个布尔值,用于决定是否递归删除目录(默认值:false)
  • callback是带签名的可选函数,如果操作不成功function (error) {},则error可能出现错误
如果未callback通过,则返回承诺。
例:
//删除文件
ipfs。文件。RM( ' /my/beautiful/file.txt ',( ERR) => {
  如果(ERR){
    控制台。错误(ERR)
  }
})

//删除多个文件
ipfs。文件。RM( ' /my/beautiful/file.txt ', ' /my/other/file.txt ',( ERR) => {
  如果(ERR){
    控制台。错误(ERR)
  }
})

//删除目录
ipfs。文件。RM( ' /我的/漂亮/目录',{递归: 真正 },( ERR) => {
  如果(ERR){
    控制台。错误(ERR)
  }
})

files.read

将文件读入Buffer
ipfs.files.read(path, [options], [callback])
哪里:
  • path 是要读取的文件的路径,必须指向文件(而不是目录)
  • options 是一个可选的Object,可能包含以下键:
    • offset 是一个整数,具有开始读取的字节偏移量(默认值:0)
    • length 是一个具有要读取的最大字节数的整数(默认值:读取到流的末尾)
  • callback是与签名的可选功能function (error, buffer) {},在这里error可以是发生了错误,如果操作没有成功,并且buffer是一个Buffer与内容path
如果未callback通过,则返回承诺。
Nb这种方法很可能会导致内存使用率过高,你应该尽可能使用files.readReadableStream或files.readPullStream。
例:
ipfs。文件。读(' /你好世界',(误差,BUF)=> {
   控制台。日志(BUF。的toString(' UTF8 '))
})

//你好,世界!

files.readReadableStream

将文件读入ReadableStream
ipfs.files.readReadableStream(path, [options])
哪里:
  • path 是要读取的文件的路径,必须指向文件(而不是目录)
  • options 是一个可选的Object,可能包含以下键:
    • offset 是一个整数,具有开始读取的字节偏移量(默认值:0)
    • length 是一个具有要读取的最大字节数的整数(默认值:读取到流的末尾)
返回a ReadableStream的内容path
例:
const  stream  =  ipfs。文件。readReadableStream(' / hello-world ')
 流。上('数据',(BUF)=>  控制台。日志(BUF。的toString(' UTF8 ')))

//你好,世界!

files.readPullStream

将文件读入PullStream
ipfs.files.readPullStream(path, [options])
哪里:
  • path 是要读取的文件的路径,必须指向文件(而不是目录)
  • options 是一个可选的Object,可能包含以下键:
    • offset 是一个整数,具有开始读取的字节偏移量(默认值:0)
    • length 是一个具有要读取的最大字节数的整数(默认值:读取到流的末尾)
返回a PullStream的内容path
例:
拉(
   IPF问题。文件。readPullStream(' /你好世界'),
   通过(BUF  =>  控制台。日志(BUF。的toString(' UTF8 '))),
   收集(ERR  => {})
)

//你好,世界!

files.write

写入文件。
ipfs.files.write(path, content, [options], [callback])
哪里:
  • path 是要写入的文件的路径
  • content 可:
    • 一个 Buffer
    • 一个 PullStream
    • 一个 ReadableStream
    • Blob(警告:只能在浏览器中使用)
    • 文件的字符串路径(警告:只能在Node.js中使用)
  • options 是一个可选的Object,可能包含以下键:
  • offset 是一个带有字节偏移量的整数,用于开始写入(默认值:0)
  • create 是一个布尔值,表示如果文件不存在则创建该文件(默认值:false)
  • truncate是一个布尔值,用于指示在写入所有字节后是否应截断文件content(默认值:false)
  • parents 是一个布尔值,用于决定是否在不存在的情况下创建父目录(默认值:false)
  • length是一个具有要读取的最大字节数的整数(默认值:读取所有字节content
  • rawLeaves:如果为true,DAG离开将包含原始文件数据而不包含在protobuf中(布尔值,默认为false)
  • cidVersion:存储数据时使用的CID版本(存储密钥基于CID,包括其版本)(整数,默认为0)
  • callback是带签名的可选函数,如果操作不成功function (error) {},则error可能出现错误
如果未callback通过,则返回承诺。
例:
ipfs。文件。写(' /你好世界',缓冲区。从('你好,世界!'),(ERR)=> {
   控制台。日志(ERR)
})

files.mv

移动文件。
ipfs.files.mv(...from, to, [options], [callback])
哪里:
  • from 是要移动的源的路径
  • to 是移动目的地的路径
  • options 是一个可选的Object,可能包含以下键:
    • parents 是一个布尔值,用于决定是否在不存在的情况下创建父目录(默认值:false)
    • format是节点写入任何新创建的目录,什么类型(默认值:dag-pb
    • hashAlg是使用哪种算法创建新创建目录的CID时(默认:sha2-256)所有可能的值的列表
    • flush 是一个布尔值,用于决定是否立即将MFS更改刷新到磁盘(默认值:true)
  • callback是带签名的可选函数,如果操作不成功function (error) {},则error可能出现错误
如果from有多个值,则to必须是目录。
如果from有一个值且to存在并且是目录,from则将被移入to
如果from有一个值且to存在并且是文件,则from必须是文件,并且内容to将被替换为内容,from否则将返回错误。
如果from是IPFS路径,并且存在具有相同名称的MFS路径,则将选择IPFS路径。
from除非它们是IPFS路径,否则将在操作完成后删除所有值。
如果未callback通过,则返回承诺。
例:
ipfs。文件。MV(' / SRC-文件',' / DST-文件',(ERR)=> {
   如果(ERR){
     控制台。错误(ERR)
  }
})

ipfs。文件。MV(' / SRC-DIR ',' / DST-DIR ',(ERR)=> {
   如果(ERR){
     控制台。错误(ERR)
  }
})

ipfs。文件。MV(' / SRC-file1的',' / SRC-file2的',' / DST-DIR ',(ERR)=> {
   如果(ERR){
     控制台。错误(ERR)
  }
})

files.flush

将给定路径的数据刷新到磁盘
ipfs.files.flush([...paths], [callback])
哪里:
  • paths是可选的串路径刷新(默认值:/
  • callback是带签名的可选函数,如果操作不成功function (error) {},则error可能出现错误
如果未callback通过,则返回承诺。
例:
ipfs。文件。齐平(' / ',(ERR)=> {
   如果(ERR){
     控制台。错误(ERR)
  }
})

files.ls

列出本地可变命名空间中的目录。
ipfs.files.ls([path], [options], [callback])
哪里:
  • path是一个可选的字符串,以示对上市(默认值:/
  • options 是一个可选的Object,可能包含以下键:
    • long是一个布尔值,用于决定是否填充typesize以及hash(默认值:false)
    • cidBase是用来格式散列哪个号码基-例如base32base64等(默认值:base58btc
    • sort是一个布尔值。如果真实条目将按文件名排序(默认值:false)
  • callback是与签名的可选功能function (error, files) {},在这里error可以是如果该操作不成功,并且发生错误files是含有包含以下键对象的数组:
  • name 这是文件的名称
  • type这是对象的类型(directoryfile
  • size 文件的大小(以字节为单位)
  • hash 文件的哈希值
如果未callback通过,则返回承诺。
例:
ipfs。文件。LS(' /截图',函数(ERR,文件){
   文件。的forEach((文件)=> {
     控制台。日志(文件。名)
  })
})

// 2018-01-22T18:08:46.775Z.png 
// 2018-01-22T18 :08:49.184Z.png

files.lsReadableStream

列出由有效IPFS路径寻址的本地可变命名空间中的目录。该列表将作为可读流产生。
Go WIP
JavaScript- ipfs.files.lsReadableStream([path],[options]) - > 可读流
哪里:
  • path是一个可选的字符串,以示对上市(默认值:/
  • options 是一个可选的Object,可能包含以下键:
    • long是一个布尔值,用于决定是否填充typesize以及hash(默认值:false)
    • cidBase是用来格式散列哪个号码基-例如base32base64等(默认值:base58btc
它返回一个只读流中对象模式,将产生含有下列键的对象:
  • name 这是文件的名称
  • type这是对象的类型(directoryfile
  • size 文件的大小(以字节为单位)
  • hash 文件的哈希值
例:
const  stream  =  ipfs。lsReadableStream(' / some-dir ')

流。上(“数据”,(文件)=> {
   //写入该文件的路径和内容标准输出
  控制台。日志(文件。名)
})

files.lsPullStream

从IPFS获取由有效IPFS路径寻址的文件或整个目录树。这些文件将通过Pull Stream产生。
Go WIP
JavaScript- ipfs.lsPullStream([path],[options]) - > Pull Stream
哪里:
  • path是一个可选的字符串,以示对上市(默认值:/
  • options 是一个可选的Object,可能包含以下键:
    • long是一个布尔值,用于决定是否填充typesize以及hash(默认值:false)
    • cidBase是用来格式散列哪个号码基-例如base32base64等(默认值:base58btc
它返回一个[Pull Stream] [os],它将产生包含以下键的对象:
  • name 这是文件的名称
  • type这是对象的类型(directoryfile
  • size 文件的大小(以字节为单位)
  • hash 文件的哈希值
例:
拉(
   IPF问题。lsPullStream(' /一些-DIR '),
   拉。通过(文件 => {
     控制台。日志(文件。名)
  })
  拉。onEnd(...)
)
在此API的测试中可以找到很好的示例来源。

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。