title: go-ipfs-api
date: 2021-12-05 21:28:22
categories:

  • 数据库
    tags:
  • IPFS

json文件

上传获取数据

package main
import ("bytes""encoding/json""fmt""io/ioutil"shell "github.com/ipfs/go-ipfs-api"
)
var sh *shell.Shell
//交易结构体(未来的通道)
type Transaction struct {Person1      string `json:"person1,omitempty" xml:"person1"`Person2      string `json:"person2,omitempty" xml:"person2"`Person1money string `json:"person1Money,omitempty" xml:"person1Money"`Person2money string `json:"person2Money,omitempty" xml:"person2Money"`
}
//数据上传到ipfs
func UploadIPFS(str string) string {sh = shell.NewShell("localhost:5001") //连接客户端hash, err := sh.Add(bytes.NewBufferString(str))if err != nil {fmt.Println("上传ipfs时错误:", err)}return hash
}
//从ipfs获取数据   只读
func CatIPFS(hash string) string {sh = shell.NewShell("localhost:5001")read, err := sh.Cat(hash)cat命令用于显示ipfs网络中的一个文件内容,注意显示的是字节形式。if err != nil {fmt.Println(err)}body, err := ioutil.ReadAll(read)//ReadAll 从 r 读取直到出现错误或 EOF 并返回它读取的数据。return string(body)
}
//通道序列化
func marshalStruct(transaction Transaction) []byte {data, err := json.Marshal(&transaction)if err != nil {fmt.Println("序列化err=", err)}return data
}
//数据反序列化为通道
func unmarshalStruct(str []byte) Transaction {var transaction Transactionerr := json.Unmarshal(str, &transaction)if err != nil {fmt.Println("unmarshal err=%v", err)}return transaction
}
func main() {//生成一个交易结构体(未来的通道)transaction := Transaction{Person1:      "Aaron",Person2:      "Bob",Person1money: "100",Person2money: "200",}//结构体序列化data := marshalStruct(transaction)//上传到ipfshash := UploadIPFS(string(data))fmt.Println("文件hash是", hash)//从ipfs下载数据str2 := CatIPFS(hash)//数据反序列化transaction2 := unmarshalStruct([]byte(str2))//验证下数据fmt.Println(transaction2)
}

结果:

文件hash是 QmUvS3J7Z5n8Kvs64H55P7WivgmsGaKFiDTtBCxpUtkxw4
{Aaron Bob 100 200}

文件

上传

var sh *shell.Shell
func UploadIPFS(str string) string {sh = shell.NewShell("localhost:5001")hash, err := sh.AddDir(str) //AddDir 递归地添加一个目录及其下的所有文件if err != nil {fmt.Println("上传ipfs时错误:", err)}return hash
}
func main() {hash := UploadIPFS("/Users/tianzhiwei/1.md")fmt.Println("文件hash是:", hash)
}

读取

func main() {str:=CatIPFS("Qmbp8846ptJUqR49pDr1WaN2q8iheLFE3ainwmfx2HvS4y")println(str)
}
//从ipfs获取数据   只读
func CatIPFS(hash string) string {sh = shell.NewShell("localhost:5001")read, err := sh.Cat(hash)//cat命令用于显示ipfs网络中的一个文件内容,注意显示的是字节形式。if err != nil {fmt.Println(err)}body, err := ioutil.ReadAll(read)//ReadAll 从 r 读取直到出现错误或 EOF 并返回它读取的数据。return string(body)
}

下载

func main() {GetIPFS("Qmbp8846ptJUqR49pDr1WaN2q8iheLFE3ainwmfx2HvS4y")
}
func GetIPFS(hash string){sh = shell.NewShell("localhost:5001")err := sh.Get(hash,"/Users/tianzhiwei/go/1.md")//   /Users/tianzhiwei/go 不写名字会以哈希值命名if err != nil {fmt.Println(err)}
}

pin

  err := sh.Pin("Qmbp8846ptJUqR49pDr1WaN2q8iheLFE3ainwmfx2HvS4y")//固定给定的路径if err != nil {fmt.Println(err)}

go-ipfs-api相关推荐

  1. wxml 点击图片下载_微信小程序通过ipfs-api 实现图片文件在私有ipfs网络的上传与下载显示...

    1.快速搭建IPFS私有网络(docker) 拉取镜像 docker pull docker.io/ipfs/go-ipfs:latest 编写yaml文件 创建两个文件夹并分别命名为:ipfs_no ...

  2. 【戴嘉乐】IPFS伴侣:一个对IPFS资源管理更加便捷的浏览器插件

    作者简介:戴嘉乐( Mr.Maple ) | 前百度高级研发工程师 | IPFS应用实践者&布道师| 个人网站:https://www.daijiale.cn 微信号:daijiale6239 ...

  3. IPFS Java实现

    搭建Ipfs私有网络 IPFS搭建指引 java ipfs功能实现 依赖 <repositories><repository><id>jitpack.io</ ...

  4. IPFS WebUI

    基本信息 IPFS 版本:v0.4.23 WebUI 版本: v2.7.2 服务端设置 WebUI 使用独立仓库管理,最新版直接发布到 IPFS 网络上,在IPFS实现代码中引用相应CID,如在 go ...

  5. IPFS 浏览器插件

    2019独角兽企业重金招聘Python工程师标准>>> IPFS 浏览器插件 IPFS可以通过浏览器插件来管理和使用,目前支持FireFox/Chrome/Brave.该项目源码在  ...

  6. 搭建IPFS网络私网教程

    前言 项目中需要使用ipfs,所以自己搭建一个. 1. 准备机器 准备几台虚拟机,不分主从,我用的是centos7,下面的教程也是基于centos7. 4台虚拟机 主机名 ip 说明 centos-1 ...

  7. IPFS 在linux 进行环境配置

    如何在linux正确的进行配置? 配置环境: ubuntu18.04 ubuntu 20.04 下载对应的go-ipfs压缩包: go-ipfs_v0.9.1_linux-amd64.tar.gz 压 ...

  8. Linux如何部署私有IPFS(安装、部署、共享key,添加节点,测试)

    一.环境准备 系统要求 至少需要2G内存,2 核 CPU. 实验环境 共计两个节点,192.168.159.102.192.168.159.103,系统采用centos7 环境准备后,按照如下步骤部署 ...

  9. 以太坊开发者工具的最新清单

    以太坊开发者工具的最新终极清单,用于在以太坊上开发应用程序的可用工具,组件,框架和平台的指南. 对于任何开发者,无论你是一个睁大眼睛的Web3新手还是一个头发灰白的OG加密无政府主义技术霸主,Gith ...

  10. 《以太坊攻略》,小白如何逆袭成为技术大咖?要学的全在这里了

    作者/ Daniel Que 编译/ kou 昨天,营长一直在劝诫小编,熊市不可怕,小编不能慌,小编也要学技术. 只有这样,天上掉"牛肉味"馅饼的时候,馅饼才能砸到站在第一排的小编 ...

最新文章

  1. 《软件定义网络:基于OpenFlow的SDN》一一2.5 本章总结
  2. MySql第几行到第几行语句
  3. python的高级函数_Python的高级函数
  4. [转] vim 正则表达式 很强大
  5. php-fpm 负荷高,记录简单处理服务器php-fpm占用过多的问题(主题影响负载)
  6. Spark Java API:Transformation
  7. NSMutableDictionary中 setValue和setObject的区别
  8. gettimeofday_PHP gettimeofday()函数与示例
  9. 人类一败涂地做图教程_绘画步骤_人类一败涂地鼠绘人物步骤与技巧_3DM单机
  10. 一篇了解什么是Spring AOP
  11. IEEE 会议论文的参考文献
  12. 增强型MOSFET导通条件
  13. android使用JavaMail开发邮箱APP
  14. 微信小程序开发入门(连载)—— 开发前的准备工作
  15. Hadoop安装(二) --- Hadoop安装
  16. 根据经纬度查询,mysql查询计算经纬度
  17. VSCODE:从零点五开始运行一个小型vaadin项目
  18. 7-7 狐狸和兔子** (10 分)
  19. C语言基础-笔记分享
  20. ntp配置本地服务器 ntp.conf

热门文章

  1. contiki STM32移植
  2. conda SSL错误
  3. android中涉及的字体修改
  4. 计算机浮点数格式化表示方法,浮点数在计算机中是如何表示的
  5. shiro学习一 (开涛的跟我学系列 ) 身份验证
  6. 战地2服务器怎么虚拟人数,战地2如何修改人数
  7. html在线人数统计代码,网页在线人数统计的代码
  8. 对字符串按“红黄蓝”进行排序,如“蓝黄红红黄”,输出结果为“红红黄黄蓝”
  9. 教你一招快速清理DNS缓存
  10. Richer Convolutional Features for Edge Detection(RCF-PYTorch)部署