DApp设计与开发课程笔记(六):NFT交易市场后端开发如何?
摘要:笔记对应课程内容为成都信息工程大学区块链产业学院老师梁培利的DApp 设计与开发 17-18 课 笔记中提到的名词不做过多解释 不懂就搜! tokenuri 对应一个metadata的 json 数据 上传一个图片,将图片上传到IPFS,获
笔记对应课程内容为成都信息工程大学区块链产业学院老师梁培利的DApp 设计与开发 17-18 课
笔记中提到的名词不做过多解释 不懂就搜!
tokenuri 对应一个metadata的 json 数据
上传一个图片,将图片上传到IPFS,获得一个cid,然后将json格式的metadata上传到IPFS,然后给用户发送一个NFT
代码:https://github.com/liangpeili/nft-market-backend
app.js
import express from 'express';
import cors from 'cors';
import bodyParser from 'body-parser';
import fileUpload from 'express-fileupload';
import { addFileToIPFS, addJSONToIPFS } from './ipfs-uploader.js';
import { mint } from './nft-minter.js';
import dotenv from 'dotenv';
dotenv.config("./.env");
const app = express()
app.set('view engine','ejs')
app.use(bodyParser.urlencoded({extended:true}))
app.use(fileUpload())
app.use(cors())
app.get('/', (req,res) => {
res.render('home')
})
app.post('/upload', (req, res) => {
if (!req.files || Object.keys(req.files).length === 0) {
return res.status(400).json({ message: 'No files were uploaded.' });
}
const file = req.files.file;
const fileName = file.name
const filePath = 'files/' + fileName
const title = req.body.title
const description = req.body.description
const address = req.body.address
console.log(title, description, address)
file.mv(filePath, async (err) => {
if (err) {
console.log('error: failed to download the file.')
return res.status(500).send(err)
}
const fileResult = await addFileToIPFS(filePath)
console.log('File added to IPFS:', fileResult.cid.toString());
const metadata = {
title,
description,
image: 'http://127.0.0.1:8080/ipfs/' + fileResult.cid.toString() + '/' + fileName
}
const jsonResult = await addJSONToIPFS(metadata)
console.log('Metadata added to IPFS:', jsonResult.cid.toString());
const userAddress = address || process.env.ADDRESS;
await mint(userAddress, 'http://127.0.0.1:8080/ipfs/' + jsonResult.cid.toString())
res.json({
message: 'File up
