ืืคื ื ืฉืื ื ืืชืืื, ืื ื ืืืื ืืขืืื
ืืืืืจ ืื ืืจืฆืื ื ืืืกืชืื ืขื ืืฉืืื ืืืืจืืืช ืขื ืืืกืื ืงืืฆืื, ืืืืฆื ื ืืชื ืืืฉืชืืฉ ืื ืขื ืืื ืื ืืื.
ืืืชืื ืืงืืืืช, "ืืืืืชื ืืช ืืืืืช" ืงืฆืช ืืืื ipfs, ืืื ืื ืงืจื ืืืืืง ืืืงืฉืจ ืฉื ืืืขืื ืฉืคืชืจืชื. ืืกื ืืื, ืื ื ืืืฉื ืฉืืคืจืืืงื ืืื ืืื ืื. ืื ื ืคืฉืื ืืขืืืฃ ืืช ืืืืืืช ืืืฆืืจ ืจืฉืชืืช ืฉืื ืืช ืืืฉืืืืช ืฉืื ืืช. ืื ืืืคืฉืจ ืื ืืืจืื ืืื ืืืชืจ ืืช ืืืื ื ืืืืคืืืช ืืช ืืขืืืก ืขื ืฆืืชืื ืืืืืื ืืขื ืืจืฉืช ืืืื. ืื ืืืกืืจืช ืฉื ืคืจืืืงื ืืื, ืืืืืช ืืฆืืจื, ืืชื ืืืื ืืคืฆื ืืช ืืจืฉืช ืืคืืกืืช ืืคื ืืื ืงืจืืืจืืื ืื, ืืืคืืืช ืืช ืืขืืืก ืืืืื.
ืื ืืืกืื ืืฉืชืืฉ ืืื ืื ืื
- ื ืืชื ืืืืกืืฃ ืงืืฆืื ืืืืืจ ืืจื ืื ืฆืืืช.
- ืงืืฆืื ื ืฉืืจืื ืืืืืื, ืื ืืืืืงืื.
- ืืื ืงืืืฅ ืืฉ ืืืืื ืชืืื ืืืืืื ืืฉืื ืืืืฉื ืขืืืื ืืืชื.
- ื ืืชื ืืฉืืคื ืงืืฆืื ืืืืื ืืช ืจืื ืืืชืจ
- ืืกืคืจ ืืงืืฆืื ืืฆืืืช ืืื ืืืืื ืจืง ืขื ืืื ืืขืจืืช ืืงืืฆืื (ืืฉ ืืจืื, ืขื ืื ืืืืฉื)
- ืืกืคืจ ืืงืืฆืื ืืจืฉืช ืืืืื ืขื ืืื ืืืืืืืช ืื ืืชื ืืช ืืคืืืืจ ืืคื ืืกืคืจ ืืฆืืชืื ืืชืงืคืื ืืจืฉืช, ืฉืืืจืกื ืืฉื ืืื ืืืืื ืืขืืื ืขื ืืื ืกืืฃ ืฆืืชืื (ืขืื ืขื ืื ืืืืืจ ืืืจ)
ืืืืื ืคืฉืืื ืืืื ืื ืขืืื ืืืจื ืืื ืืืชืืื ืืช:
ืฉืจืช:
const Node = require('storacle').Node;
(async () => {
try {
const node = new Node({
port: 4000,
hostname: 'localhost'
});
await node.init();
}
catch(err) {
console.error(err.stack);
process.exit(1);
}
})();
ืึธืงืึผืึท:
const Client = require('storacle').Client;
(async () => {
try {
const client = new Client({
address: 'localhost:4000'
});
await client.init();
const hash = await client.storeFile('./my-file');
const link = await client.getFileLink(hash);
await client.removeFile(hash);
}
catch(err) {
console.error(err.stack);
process.exit(1);
}
})();
ืืื ืืืคื ืื
ืืื ืฉืื ืืืจ ืืคืืืจ ืืชืืช ืืืืกื ืืื ืืข. ืืืืข ืขื ืืกืคืจ ืืงืืฆืื, ืืืืื ืืืืื ืื ืงืืืืช ื ืืกืคืืช ื ืฉืืจ ืืืกื ื ืชืื ืื ืืืืืจืื ืืืชืขืืื ืืืฉืจ ืงืืฆืื ื ืืืงืื ืืืชืืืกืคืื, ืื ืฉืืื ืฆืืจื ืืืืฉื ืชืืืคื ืืืขืจืืช ืืงืืฆืื. ืืืฆื ืื ืืืื ืืื ืืคืขืืช ืืืกืฃ ืืืฉืคื ืืืฉืจ ืืชื ืฆืจืื ืืืคืืฅ ืงืืฆืื ืืืฉืจ ืืืืขืื ืืืืื ืืืกืื ืืกืืื, ืืื ืืืกืจืื ืขื ืืืกืคืช ืงืืฆืื ืืืฉืื. ืืืงืจื ืื, ืืฉ ืืขืงืืฃ ืืช ืืืืกืื, ืืขืืืื ืขื ืืกืคืจ ืจื ืฉื ืงืืฆืื (> ื ืืื ืืืืืื) ืขืืืื ืืืืืื ืืขืืืกืื ืืฉืืขืืชืืื. ืืขืืืฃ ืืืืกื ืคืืืช ืงืืฆืื ืืืืคืขืื ืืืชืจ ืฆืืชืื. ืื ื"ืื ืงื" ืืืฉืืช, ืื ืืื ืืขืื ืืื.
ืืืกืื ืืงืืฆืื ืืืจืื ื-256 ืชืืงืืืช ื-2 ืจืืืช ืฉื ืงืื ืื. ืงืืฆืื ืืืืืกื ืื ืืชืืงืืืช ืืจืื ืืฉื ืืื. ืืืืืจ, ืื ืืฉ ืืืืืื. ืืืื ื-1 ืงืืฆืื ืืื ืชืืงืื ืืื (62500 / sqrt(1000000)).
ืฉืืืช ืืชืืงืืืช ื ืืฆืจืื ืื-hash ืฉื ืืงืืืฅ ืื ืฉืชืืื ืืืฉืช ืืืื ืืืืืจืืช ืื ืืชื ืืืืจ ืืช ื-hash.
ืืื ื ืื ื ืืืจ ืขื ืกืื ืืกืคืจ ืจื ืฉื ืืจืืฉืืช ืืืกืื ืฉืื ืืช: ืชืืืื ืืืขืจืืืช ืงืืฆืื ืืืฉืืช, ืืื ืื ืจืฆืื ืืืืืืง ืงืืฆืื ืจืืื ืืชืืงืืื ืืืช, ืืขืืจ ืืืืจ ืฉื ืื ืืชืืงืืืช ืืืืืช ืืฆืืจื ืืื'. ืกืื ืฉื ืืืฆืขื ืืื.
ืฉืืืจื ืืืืืื
ืืขืช ืืืกืคืช ืงืืฆืื, ืืื ืื ืืขืช ืงืืืชื, ื ืืชืืื ืงืืฉืืจืื ืืงืืฆืื ืืืืืื.
ืืืืืช ืืื, ืืขืชืื ืงืจืืืืช ืืืื ืืื ืฆืืจื ืืืฆืืช ืืช ืื ืืจืฉืช ืืืืคืืฉ ืืืจ ืงืืืฅ. ืื ืืืืฅ ืืช ืงืืืช ืืงืืฉืืจืื ืืืคืืืช ืืช ืืขืืืก ืขื ืืจืฉืช. ืฉืืืจื ืืืืืื ืืชืจืืฉืช ืื ืืืืฆืขืืช ืืืชืจืืช http.
ืืืืืืืจืคืื
ืืืงืื ืืชืื ื-javascript ืืืื ืืืืืืืจืคื, ื ืืชื ืืืฉืชืืฉ ืื ืืฉืืจืืช ืืืืคืืคื.
ืืชื ืืืื ืืืขืืืช ืืช ืืงืืืฅ
ืงืืฉืืจืื ืืืืืื
ืชืืื ื ืืขื ืืื ืช ืืื ืื "ืืชืืืืกืืช ื ืืืืช". ืืื ืงืืฉืืจ ืืงืืืฅ ืฉื ืืชื ืืืฉืื ืืืืคื ืกืื ืืจืื ื, ืืื ืืขืืฉืื, ืืืงืืืฅ ืืืืฉื ืืฉืืื ืืืจ ื ืืฆื ืืืืกืื. ืื ืืืื ื ืื ืืืฉืจ, ืืืฉื, ืืชื ืฆืจืื ืืืฆืื ืืื ืชืืื ืืช ืืืชืจ. ืคืฉืื ืฉืื ื ืงืืฉืืจ ืืืื ื-src ืืืื. ืืชื ืืืื ืืืขืืืช ืืงืจืื ืจืืื.
ืืงืื API
- ืืกืื ืืจืื ื Client.prototype.storeFile() - ืฉืืืจืช ืืงืืืฅ
- ืืกืื ืืจืื ื Client.prototype.getFileLink() - ืงืืืช ืงืืฉืืจ ืืฉืืจ ืืงืืืฅ
- ืืกืื ืืจืื ื Client.prototype.getFileLinks() - ืงืืืช ืจืฉืืื ืฉื ืงืืฉืืจืื ืืฉืืจืื ืืงืืืฅ ืืื ืืฆืืชืื ืฉืืื ืืื ืงืืื
- ืืกืื ืืจืื ื Client.prototype.getFileToBuffer() - ืืื ืก ืืช ืืงืืืฅ ืืืืืจ
- ืืกืื ืืจืื ื Client.prototype.getFileToPath() - ืืื ืก ืงืืืฅ ืืืขืจืืช ืืงืืฆืื
- ืืกืื ืืจืื ื Client.prototype.getFileToBlob() - ืงืื ืืช ืืงืืืฅ ื-blob (ืขืืืจ ืืจืกืช ืืืคืืคื)
- ืืกืื ืืจืื ื Client.prototype.removeFile() - ืืืืืง ืงืืืฅ
- Client.prototype.createRequestedFileLink() - ืฆืืจ ืงืืฉืืจ ืืืื
ืืืฆื ืงืืฆืื ืืฉืจืช ืืืจ
ืืื ืืืขืืืจ ืงืืฆืื ืืฆืืืช ืืืจ, ืืชื ืืืื:
- ืคืฉืื ืืขืชืง ืืช ืื ืชืืงืืืช ืืืืกืื ืืื ืขื ืืืืืจืืช. (ืืืชืื ืฉืื ืื ืืขืืื ืืขืชืื)
- ืืขืชืง ืจืง ืืช ืืชืืงืื ืขื ืืงืืฆืื. ืืื, ืืืงืจื ืื, ืชืฆืืจื ืืืคืขืื ืืช ืืคืื ืงืฆืื ืคืขื ืืืช node.normalizeFilesInfo()ืืืฉื ืืืืฉ ืืช ืื ืื ืชืื ืื ืืืืืื ืืืชื ืืืกื ืื ืชืื ืื.
- ืืฉืชืืฉ ืืคืื ืงืฆืื node.exportFiles()ืืฉืจ ืืชืืื ืืืขืชืืง ืงืืฆืื.
ืืืืจืืช ืฆืืืช ืืกืืกืืืช
ืืขืช ืืคืขืืช ืฆืืืช ืืืืกืื, ืืชื ืืืื ืืฆืืื ืืช ืื ืืืืืจืืช ืืืจืืฉืืช.
ืืชืืจ ืืช ืืืกืืกืืื ืืืืชืจ, ืืช ืืฉืืจ ื ืืชื ืืืฆืื ื-Github.
- storage.dataSize - ืืืื ืืชืืงืื ืขื ืืงืืฆืื
- storage.tempSize - ืืืื ืชืืงืืื ืืื ื
- storage.autoCleanSize - ืืืื ืืืืกืื ืืืื ืืืื ืฉืฆืจืื ืืืืืืง. ืื ืชืฆืืื ืืช ืืคืจืืืจ ืืื, ืืจืืข ืฉืืฉืื ืืชืืื ืืืืืืจ, ืืงืืฆืื ืืื ืคืืืช ืืฉืืืืฉ ืืืืืงื.
- file.maxSize - ืืืื ืงืืืฅ ืืงืกืืืื
- file.minSize - ืืืื ืงืืืฅ ืืื ืืืื
- file.preferredDuplicates - ืืกืคืจ ืืืขืืฃ ืฉื ืืคืืืืืืช ืงืืฆืื ืืจืฉืช
- ืืจืฉืืื ืืืื ื ืฉื file.mime - ืกืืื ืงืืฆืื ืืืงืืื
- file.mime ืจืฉืืื ืฉืืืจื - ืกืืื ืงืืฆืื ืื ืืืงืืื
- file.extWhitelist - ืกืืืืืช ืงืืฆืื ืืืงืืืช
- file.extBlacklist - ืกืืืืืช ืงืืฆืื ืื ืืืงืืืช
- file.linkCache - ืืืืจืืช ืฉืื ืืช ืฉื ืืืกืื ืืืืืื ืงืืฉืืจืื
ื ืืชื ืืืืื ืืืขื ืืช ืื ืืคืจืืืจืื ืืงืฉืืจืื ืืืืืื ืื ืืขืจืืื ืืืืืืื ืืื ืืขืจืืื ืืืกืืื.
ืขืืืื ืืจื ืฉืืจืช ืืคืงืืื
ื ืืชื ืืืฉืชืืฉ ืืกืคืจืืื ืืืืฆืขืืช ืฉืืจืช ืืคืงืืื. ืืฉื ืื ืขืืื ืืืชืงืื ืืืชื ืืจืืื ืืขืืื: npm i -g ืืืกืื. ืืืืจ ืืื, ืชืืื ืืืคืขืื ืืช ืืคืขืืืืช ืืืจืืฉืืช ืืกืคืจืืืช ืืคืจืืืงื ืฉืื ื ืืฆื ืืฆืืืช. ืืืืืื, storacle -a storeFile -f ./file.txt -c ./config.jsืืื ืืืืกืืฃ ืืช ืืงืืืฅ. ื ืืชื ืืืฆืื ืืช ืื ืืคืขืืืืช ื
ืืื ืืืื ืชืฆืืจื ืืช ืื?
- ืื ืืชื ืจืืฆื ืืืฆืืจ ืืืืฉืื ืคืจืืืงื ืืืืืจ ืฉืื ืืชื ืืชืื ื ืืืืกื ืืืขืืื ืขื ืงืืฆืื ืืฉืืืืช ื ืืืืช. ืืืืืื, ืคืจืืืงื ืืืืืืงื ืืืชืืืจ ืืงืืฉืืจ ืืชืืืืช ืืืืืจ ืืฉืชืืฉ ืืืกื.
- ืื ืืชื ืขืืื ืขื ืื ืคืจืืืงื ืืืจ ืฉืื ืืชื ืฆืจืื ืืืืกื ืงืืฆืื ืืฆืืจื ืืืืืจืช. ืืชื ืืืื ืืงืืืช ืืื ืืช ืืช ืืจืฉืช ืืกืืืจื ืฉืื, ืืืืืืจ ืฆืืชืื ืืืืคื ืืืืฉ ืืืืืกืืฃ ืืืฉืื ืืขืช ืืฆืืจื.
- ืื ืืชื ืจืง ืฆืจืื ืืืืกื ืืช ืงืืฆื ืืืชืจ ืฉืื ืืืคืฉืื ืืื ืืืชืจ ืืื ืืฉืืืื ืืืชืื ืืื ืืขืฆืื. ืืืื ืกืคืจืืื ืื ืืชืืืื ืืืชืจ ืืืืจืืช ืืืงืจื ืฉืื.
- ืื ืืฉ ืื ืคืจืืืงื ืฉืื ืืชื ืขืืื ืขื ืงืืฆืื, ืืื ืจืืฆื ืืืฆืข ืืช ืื ืืื ืืคืืืฆืืืช ืืืืคืืคื. ืืชื ืืืื ืืืืื ืข ืืืชืืืช ืงืื ืฉืจืช.
ืื ืฉื ืืงืฉืจ ืฉืื:
ืืงืืจ: www.habr.com