我正在使用交通反应框制作Solidity Drive应用。
将文件拖放到浏览器以将文件上传到ipfs,并尝试通过调用已部署的智能联系人来保存返回的哈希值。
解密文件时,返回错误'POSThttp://localhost:5001/api/v0/add?stream-channels=true403(禁止)。
我需要有关修复方法的帮助。
//这是我的onDrop事件代码
onDrop = async (file) => {
try {
const {contract, accounts} = this.state;
const stream = fileReaderPullStream(file);
const result = await ipfs.add(stream);
const timestamp = Math.round(+new Date() / 1000);
const type = file.name.substr(file.name.lastIndexOf(".")+1);
let uploaded = await contract.methods.add(result[0].hash, file.name, type, timestamp).send({from: accounts[0], gas: 300000})
console.log(uploaded);
this.getFiles();
} catch (error) {
console.log(error);
}
};
这是CORS问题。无法通过这样的浏览器直接访问IPFS HTTP API,您需要将其放置在诸如NGINX服务器之类的位置,该服务器配置为能够正确处理CORS,以便它能够正确处理基于浏览器的请求。
编辑:
另外,如果您不想使用NGINX,则可以直接更改ipfs节点配置,以覆盖可以访问的域列表。有关更多信息,请参见here。