Я не очень разбираюсь в JavaScript, но мне действительно нравится среда Node-Red для подключения к устройствам IoT.Я построил небольшой поток, который соединяет узел http-запроса (чтобы получить изображение) с узлом функции, а узел функции - с узлом msg-debug (чтобы увидеть, что происходит).
Рисунок успешно захвачен узлом запроса, и я использовал эту функцию javascript в узле функции, чтобы отправить полезную нагрузку (изображение) в IPFS, чтобы загрузить его и получить обратно хэш загруженного файла, но этоне работаетЧто я делаю не так?
Обратите внимание, что на моей машине запущен демон IPFS: http://localhost:5001/
Я пробовал разные сценарии (из node.js или других онлайн-примеров).) но никто не работал.
Вот код в узле функции:
//const ipfsAPI = require('ipfs-api');
var payload=msg.payload;
function toIPFS(file) {
return new Promise(resolve => {
const reader = new FileReader();
reader.onloadend = function() {
const ipfs = IpfsApi('ipfs', 5001,{protocol : "http"}) // Connect to IPFS
const buf = buffer.Buffer(reader.result) // Convert data into buffer
ipfs.files.add(buf, (err, result) => { // Upload buffer to IPFS
if(err) {
return "error";
}
let url = `https://ipfs.io/ipfs/${result[0].hash}`
resolve('resolved url');
})
}
reader.readAsArrayBuffer(file); // Read Provided File
//console.log(`done!!!!`)
});
}
//var test = toIPFS(payload);
toIPFS(payload);
return msg;
Объект сообщения, который я получаю от узла msg-debug в конце, выглядит так:
object
_msgid: "80561394.e873e"
topic: ""
payload: ""
statusCode: 200
headers: object
accept-ranges: "bytes"
access-control-allow-origin: "*"
access-control-expose-headers: "Content-Length"
cache-control: "max-age=604800, must-revalidate"
content-type: "image/jpeg"
date: "Sun, 16 Jun 2019 16:39:46 GMT"
last-modified: "Thu, 28 Jun 2018 04:32:21 GMT"
server: "ECS (lcy/1D6A)"
strict-transport-security: "max-age=631138519"
surrogate-key: "media media/bucket/2 media/1012192454752301056"
x-cache: "HIT"
x-connection-hash: "4d2ce5d9ed372dccc93b26cf6e8ce8c4"
x-content-type-options: "nosniff"
x-response-time: "460"
content-length: "127686"
connection: "close"
x-node-red-request-node: "6f2e7990"
responseUrl: "https://upload.wikimedia.org/wikipedia/commons/1/12/K2_2006b.jpg"
redirectList: array[0]