最近,我正在尝试将文件上传到IPFS并使用ipfs核心api下载/检索它。为此,请使用.net库ipfs(c#) library。它对于txt文件效果很好,但是当我上传pdf文件并尝试下载时,它给了我某种string.i以为该字符串可能是我的pdf文件的所有内容,但该字符串证明我错了。当我尝试将原始pdf文件字符串与(完全不同)的(当前字符串)进行比较时。
我的pdf文件哈希: QmWPCRv8jBfr9sDjKuB5sxpVzXhMycZzwqxifrZZdQ6K9o
和我的C#代码获取this(api)==>
static void Main(string[] args)
{
var ipfs = new IpfsClient();
const string filename = "QmWPCRv8jBfr9sDjKuB5sxpVzXhMycZzwqxifrZZdQ6K9o";
var text = ipfs.FileSystem.ReadAllTextAsync(filename).Result;
}
我的问题是我做错了,我做错了什么,那我怎么能得到一个pdf文件呢?怎么样??
答案 0 :(得分:0)
首先,请检查您是否可以从实时环境访问文件: 例如
https://ipfs.infura.io/ipfs/QmNtg1uDy1A71udMa2ipTfKghArRQFspfFkncunamW29SA
如果文件已正确上传,则可以使用IpfsClient软件包执行此操作:
定义在ipfs env上引用的属性(例如,通过infura)
_ipfsClient = new IpfsClient("https://ipfs.infura.io:5001");
介绍通过散列下载文件的方法
public async Task<byte[]> DownloadAsync(string hash)
{
using (var stream = await _ipfsClient.FileSystem.ReadFileAsync(hash))
{
using (var ms = new MemoryStream())
{
stream.CopyTo(ms);
return ms.ToArray();
}
}
}
public async Task<IActionResult> Get(string hash)
{
var data = await _ipfsDownloadService.DownloadAsync(hash);
return File(data, "application/pdf");
}