【问题标题】:How to send a file from the browser to a remote IPFS gateway如何将文件从浏览器发送到远程 IPFS 网关
【发布时间】:2017-07-07 13:09:57
【问题描述】:

我有一个正在调用 _getFile 函数的输入字段

<input type="file" class="file" on-change="_getFile"/>

获取文件

_getFile(event) {
  this.loading = true;
  const file = event.target.files[0];
  let reader = new window.FileReader()
  reader.onloadend = () => this._saveToIpfs(reader)
  reader.readAsArrayBuffer(file)
 }
}

一旦我们有了一个数组缓冲区,我们就调用...

_saveToIpfs(data){

}

我需要帮助的就是这个,我想把选中的文件发送到'https://ipfs.infura.io:5001/api/v0/add'或者'https://ipfs.io/api/v0/add'怎么办?这是一个xhr帖子吗?我希望得到一个 IPFS 哈希

下面的简单表单似乎上传了文件,然后由于错误 ERR_CONTENT_LENGTH_MISMATCH 而断开连接

<form action="https://ipfs.io/api/v0/add/" method="post" enctype="multipart/form-data">
    Select image to upload:
    <input type="file" name="fileToUpload" id="fileToUpload">
    <input type="submit" value="Upload Image" name="submit">
</form>

我也尝试了经典的 XHR

_getFile(event) {
const file = event.target.files[0];
var data = new FormData();
data.append('path', event.target.files[0]);
var request = new XMLHttpRequest();
request.onreadystatechange = function(){
    if(request.readyState == 4){
        console.log(request.response)
    }
};
request.open('POST', 'https://ipfs.io/api/v0/add');
request.send(data);
}

再次使用 ERR_CONTENT_LENGTH_MISMATCH

【问题讨论】:

    标签: ipfs


    【解决方案1】:

    您可以使用官方的js-ipfs-api 库。然后您可以使用ipfs.files.add 函数发布您的文件,因为您已经在数组缓冲区中拥有它。如果这不起作用,js-ipfs-api 有一个内置的 Buffer 对象可以使用。

    【讨论】:

      【解决方案2】:

      您可能应该使用Gateway API 而不是Node API。只需向其中发布一个文件,您就会得到一个哈希值。

      举个例子,看看IPFessay does it如何。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-08-18
        • 2015-09-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-07-18
        相关资源
        最近更新 更多