Я работаю над торговой площадкой NFT, и сегодня я обнаружил, что не могу загружать данные в IPFS с помощью http-клиента. Вчера данные загружались отлично, но теперь они не загружаются в IPFS, и существующие URL-адреса IPFS также не возвращают никаких данных JSON. Вместо этого он возвращает Общедоступный шлюз больше не поддерживается — настройте выделенный шлюз
Вот функции, которые я использую для загрузки данных в IPFS:
const [fileUrl, setFileUrl] = useState(null);
const [formInput, updateFormInput] = useState({
price: "",
name: "",
description: "",
});
async function onChange(e) {
const file = e.target.files[0];
try {
const added = await client.add(file, {
progress: (prog) => console.info(`received: ${prog}`),
});
const url = `https://ipfs.infura.io/ipfs/${added.path}`;
setFileUrl(url);
console.info(fileUrl);
} catch (error) {
console.info("Error uploading file: ", error);
}
}
async function uploadToIPFS() {
const { name, description, price } = formInput;
if (!name || !description || !price || !fileUrl) return;
/* first, upload to IPFS */
const data = JSON.stringify({
name,
description,
image: fileUrl,
});
try {
const added = await client.add(data);
const url = `https://ipfs.infura.io/ipfs/${added.path}`;
/* after file is uploaded to IPFS, return the URL to use it in the transaction */
console.info(url);
return url;
} catch (error) {
console.info("Error uploading file: ", error);
}
}
Я столкнулся с той же проблемой, я думаю, что Infura требует, чтобы мы создали новый проект IPFS и должны реализовать projectId и projectSecret в нашем коде.
import { create } from 'ipfs-http-client'
const projectId = process.env.NEXT_PUBLIC_INFURA_IPFS_PROJECT_ID
const projectSecret = process.env.NEXT_PUBLIC_INFURA_IPFS_PROJECT_SECRET
const projectIdAndSecret = `${projectId}:${projectSecret}`
const client = create({
host: 'ipfs.infura.io',
port: 5001,
protocol: 'https',
headers: {
authorization: `Basic ${Buffer.from(projectIdAndSecret).toString(
'base64'
)}`,
},
})
IPFS infura устарела от общедоступных шлюзов, т.е. он недоступен после 10 августа 2022 г.. Вы можете использовать выделенный шлюз, выполнив следующие действия: