【发布时间】:2021-04-05 06:32:45
【问题描述】:
我有一个如下所示的代码,它从浏览器上传文件并保存在服务器中,一旦保存到服务器,我希望服务器连接到 Pinata API,以便文件也可以保存到IPFS 节点。
let data = new FormData();
const fileBuffer = Buffer.from(`./public/files/${fileName}`, 'utf-8');
data.append('file', fileBuffer, `${fileName}`);
axios.post('https://api.pinata.cloud/pinning/pinJSONToIPFS',
data,
{
headers: {
'Content-Type': `multipart/form-data; boundary= ${data._boundary}`,
'pinata_api_key': pinataApiKey,
'pinata_secret_api_key': pinataSecretApiKey
}
}
).then(function (response) {
console.log("FILE UPLOADED TO IPFS NODE", fileName);
console.log(response);
}).catch(function (error) {
console.log("FILE WASNT UPLOADED TO IPFS NODE", fileName);
console.log(error);
});
我遇到的问题是,在创建文件的缓冲区并将其包装在 formdata 中后,pinata API 返回错误:
data: {
error: 'This API endpoint requires valid JSON, and a JSON content-type'
}
如果我将数据转换为JSON.stringify(data) 之类的字符串并将内容类型更改为application/json,则文件缓冲区将作为字符串成功上传。
我希望能很好地解释它以获得解决方案。谢谢。
【问题讨论】:
标签: node.js express axios buffer ipfs