java实现ipfs文件的上传和下载
准备:
1.解压ipfs文件系统包go-ipfs-windows-installer-master.zip
2.cmd命令
1) ipfs init
2) ipfs daemon
3.浏览器访问 http://localhost:5001/webui 成功
1.引入所需要的依赖
<repositories>
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.github.ipfs</groupId>
<artifactId>java-ipfs-api</artifactId>
<version>v1.2.2</version>
</dependency>
</dependencies>
2.测试
import io.ipfs.api.IPFS;
import io.ipfs.api.MerkleNode;
import io.ipfs.api.NamedStreamable;
import io.ipfs.multihash.Multihash;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
public class Test {
static IPFS ipfs = new IPFS("/ip4/127.0.0.1/tcp/5001");//ipfs的服务器地址和端口
public static void main(String[] args) throws IOException {
String fileHash = upload("src\\main\\resources\\111.txt");
System.out.println(fileHash);
download("src\\main\\resources\\"+fileHash+".txt",fileHash);
}
public static String upload(String filePathName) throws IOException {
//filePathName指的是文件的上传路径+文件名,如D:/1.png
NamedStreamable.FileWrapper file = new NamedStreamable.FileWrapper(new File(filePathName));
MerkleNode addResult = ipfs.add(file).get(0);
return addResult.hash.toString();
}
public static void download(String filePathName,String hash) throws IOException {
Multihash filePointer = Multihash.fromBase58(hash);
byte[] data = ipfs.cat(filePointer);
if(data != null){
File file = new File(filePathName);
if(file.exists()){
file.delete();
}
FileOutputStream fos = new FileOutputStream(file);
fos.write(data,0,data.length);
fos.flush();
fos.close();
}
}
}