如何将文件从浏览器发送到远程 IPFS 网关
How to send a file from the browser to a remote IPFS gateway
我有一个调用 _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' or 'https://ipfs.io/api/v0/add”怎么办?是 xhr post 吗?我希望得到一个 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
您可能应该使用 Gateway API 而不是节点 API。只需 POST 一个文件,你就会得到一个哈希值。
例如,请参阅 IPFessay does it。
您可以使用官方 js-ipfs-api library. Then you can use the ipfs.files.add
函数来 post 您的文件,因为您已经将其保存在数组缓冲区中。如果这不起作用,js-ipfs-api 有一个内置的 Buffer 对象,你可以使用。
我有一个调用 _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' or 'https://ipfs.io/api/v0/add”怎么办?是 xhr post 吗?我希望得到一个 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
您可能应该使用 Gateway API 而不是节点 API。只需 POST 一个文件,你就会得到一个哈希值。
例如,请参阅 IPFessay does it。
您可以使用官方 js-ipfs-api library. Then you can use the ipfs.files.add
函数来 post 您的文件,因为您已经将其保存在数组缓冲区中。如果这不起作用,js-ipfs-api 有一个内置的 Buffer 对象,你可以使用。