Ipfs
IPFS 文件下載
我想檢查是否有任何方法可以在不執行本地惡魔的情況下下載 IPFS 文件。我正在開發一個 Dapp,我將通過 IPFS 上傳文件並將其連結發送給相應的團隊。我希望那個團隊下載文件。
您可以在 DApp 中添加 npm 庫“ipfs”。
https://www.npmjs.com/package/ipfs
庫/ipfs.js
const IPFS = require('ipfs'); const node = new IPFS(); /** * Function that uploads file onto IPFS * @param {JSON} fileDetails Json containing file details that needs to be updated on IPFS * @param {function} callback callback function */ const uploadFileToIPFS = function(fileDetails, callback) { let fileContent = fs.readFileSync(fileDetails.path); node.files.add({ path: fileDetails.originalname, content: fileContent }, (err, filesAdded) => { if (err) { return callback(err); } callback(null, { hash: filesAdded[0].hash }); }); }; /** * Function that gets the document contents from IPFS, based on the document's hash * @param {String} ipfsHash IPFS hash of the document that is being uploaded onto IPFS * @param {function} callback callback function */ const getFileContentsFromIPFS = function(ipfsHash, callback) { node.files.cat(ipfsHash, function(err, data) { callback(err, data); }); };
路線/ipfs.js
// API that gets the documents from IPFS router.get('/api/to/get/document/from/ipfs', function(req, res){ ipfs.getFileContentsFromIPFS(req.query.ipfsHash, function(err, result){ if (err) { res.json({ status: 'error', message: 'Something went wrong while fetching document from IPFS' }); } else { //Get the file type let isImageOrPdf = fileType(result); if (isImageOrPdf.ext == 'pdf') { res.writeHead(200,{ 'Content-type': 'application/pdf' }); res.end(result); } else if(isImageOrPdf.ext == 'png' || isImageOrPdf.ext == 'jpg' ){ res.writeHead(200, {'Content-Type' : 'image/png'}); res.end(result); } } }); });
而不是發送連結,而是發送文件的 ipfsHash,每當他們想要下載文件時,獲取 ipfsHash 並點擊上面的 API,該文件就會被下載。
試試 http 網關Cloudflare IPFS 網關 - IPFS 新聞