IPFS-day02

其他常用操作

  1. 添加文件并用文件夹包裹

    ipfs add xxx -w

  2. 把內容快取到本地,并提供给他人。官网文档

    ipfs pin add QmT7TX5vGmFz86V8cDkPuTss1vp4qTXeaziGZrjdJhURFf

    add 本身是递归的,所有的子目录都回被 pin 住。可以用 ipfs pin ls 看看本地 pin 的内容。

js-ipfs-api

官网

文本上传&获取

  • 上传

    ipfs.files.add(Buffer.from(value, 'utf-8'))
        .then(files => console.log(files[0].hash))
        .catch(e => console.error(e));
    
  • 获取

    ipfs.files.cat(inputHash, (err, file) => {
        if (err) {
            throw err;
        }
        let message = file.toString('utf8');
        console.log(message);
    })
    

图片上传&展示

  • 上传

    let fr = new FileReader();
    fr.onloadend=(e) => {
        // 文件加载完成, 开始上传
        ipfs.add(Buffer.from(fr.result))
            .then(result => {this.setState({imgHash: result[0].hash})})
            .catch(e => console.error(e))
    };
    // 加载文件
    fr.readAsArrayBuffer(file)
    
  • 展示

    <img src={`http://127.0.0.1:8080/ipfs/${imgHash}`} alt="黑马程序员"/>
    

音频/视频上传&展示

<div id="player__holder">
    <h3>多媒体Hash: {mediaHash}</h3>
    <video id="player" controls src={`http://127.0.0.1:8080/ipfs/${mediaHash}`}>
        <p>Your browser does not support playing video. </p>
    </video>
    {/*<audio width='100%' controls>*/}
    {/*<source src={`http://127.0.0.1:8080/ipfs/${mediaHash}`} />*/}
    {/*</audio>*/}
</div>

本地files操作

  • ls
  • cp
  • rm

通过antd优化页面

ipfs跨平台客户端(electron)

https://github.com/ipfs-shipyard/ipfs-desktop/releases