下载IPFS
- 官网(https://dist.ipfs.io/#go-ipfs) 下载Linux版本的ipfs(需要访问国外网站)
- 使用wget下载
wget https://github.com/ipfs/go-ipfs/releases/download/v0.4.23/go-ipfs_v0.4.23_linux-amd64.tar.gz
解压文件
tar zxvf go-ipfs_v0.12.0_linux-amd64.tar.gz
进入主目录并进行安装
cd go-ipfs/
./install.sh
查看IPFS版本
ipfs version
查看配置文件
ipfs config show
注意:
建议5001端口只开放给业务服务器,其他禁止访问!为了安全!!!!
修改配置文件
ipfs config edit
// 可能会出现下面的错误
// Error: ENV variable $EDITOR not set
// 为ipfs选择编辑器
export EDITOR=vi
ipfs config edit
启动ipfs,并打开web页面
ipfs daemon
http://xxx.xxx.com:8088/ipfs/QmSoASxb8aNVGk3pNWpZvXEZTQKxjGeu9bvpYHuo5bP1VJ
http://xxx.xxx.com:5001/webui
Go连接ipfs
func MainTest() {
hashMap := make(map[int]string, 10000)
// 上传文件 -- 可以是前端上传,也可以是后端上传
file := fmt.Sprintf("ipfs/1111.png")
raw := Read(file)
if raw != nil {
hash, err := UploadIPFS(raw)
if err != nil {
log.Println("UploadIPFS err", err)
} else {
hashMap[0] = fmt.Sprintf("https://ipfs.io/ipfs/%s?filename=%s", hash, hash)
}
log.Println("hash", hash)
}
// 存储文件中
WriteHash("hash.json", hashMap)
}
func UploadIPFS(raw []byte) (string, error) {
sh := shell.NewShell(IPFS_Host)
reader := bytes.NewReader(raw)
fileHash, err := sh.Add(reader)
if err != nil {
return "", err
}
fmt.Println(fileHash)
return fileHash, nil
}
func NewShell(url string) *Shell {
c := &gohttp.Client{
Transport: &gohttp.Transport{
Proxy: gohttp.ProxyFromEnvironment,
DisableKeepAlives: true,
},
}
return NewShellWithClient(url, c)
}
var IPFS_Host = "http://xxx.xxx.com:5001"
本期就到这里,下期继续未完讲解。
同学们,兴趣是最好的老师;只争朝夕,不负韶华!加油!
参考资料:
Go语言中文文档
http://www.golang.ltd/
Go语言在线编辑器:
http://OL.Golang.LTD/
LollipopGo社区(筹建中)
https://www.LollipopGo.Com/