2017-07-07 145 views
3

我有一個的呼喚一個_getFile功能如何從瀏覽器發送文件到遠程IPFS網關

<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> 

我ASO嘗試了經典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

回答

0

您應該使用Gateway API而不是Node API。只需向它發佈一個文件,就會得到一個散列表。請參閱IPFessay does it

相關問題