46 lines
1.1 KiB
JavaScript
46 lines
1.1 KiB
JavaScript
import { create } from 'ipfs';
|
|
import { writeFileSync } from 'fs';
|
|
|
|
class IPFSFileManager {
|
|
constructor(cid) {
|
|
this.cid = cid;
|
|
this.node = null;
|
|
}
|
|
|
|
async initIPFS() {
|
|
this.node = await create();
|
|
console.log('IPFS node is ready');
|
|
}
|
|
|
|
async retrieveFileFromIPFS() {
|
|
try {
|
|
await this.initIPFS();
|
|
const chunks = [];
|
|
for await (const chunk of this.node.cat(this.cid)) {
|
|
chunks.push(chunk);
|
|
}
|
|
const fileData = Buffer.concat(chunks);
|
|
|
|
// Save the file data to a local file
|
|
const filePath = `./retrievedFile.pdf`;
|
|
writeFileSync(filePath, fileData);
|
|
|
|
this.closeIPFS();
|
|
console.log('File retrieved from IPFS and saved as:', filePath);
|
|
} catch (error) {
|
|
console.error('Failed to retrieve the file from IPFS', error);
|
|
}
|
|
}
|
|
|
|
async closeIPFS() {
|
|
if (this.node) {
|
|
await this.node.stop();
|
|
console.log('IPFS node connection closed');
|
|
}
|
|
}
|
|
}
|
|
|
|
const cid = 'QmQgGxzWnzjCfouxRiozBiEG3wcsuJGWjtHjv3wurVbJ9s'; // Replace with the CID of the file you want to retrieve
|
|
const ipfsFileManager = new IPFSFileManager(cid);
|
|
ipfsFileManager.retrieveFileFromIPFS();
|