Как скачать pdf-файл из IPFS с использованием ipfs core api в .net? - PullRequest
0 голосов
/ 13 октября 2018

В последнее время я пытаюсь загрузить файл в IPFS и загрузить / получить его с помощью ipfs core api.И для этой цели используется библиотека .net ipfs (c #), библиотека .он прекрасно работает для txt-файла, но когда я загрузил pdf-файл и попытался его скачать, он дает мне какую-то строку.когда я пытаюсь сравнить мою исходную строку файла PDF с (текущей строкой), которая полностью отличается ..

мой хэш файла PDF: QmWPCRv8jBfr9sDjKuB5sxpVzXhMycZzwqxifrZZdQ6K9o

c # 1008 * *

*получить это (API) ==>

        static void Main(string[] args)
    {
        var ipfs = new IpfsClient();

        const string filename = "QmWPCRv8jBfr9sDjKuB5sxpVzXhMycZzwqxifrZZdQ6K9o";
        var text = ipfs.FileSystem.ReadAllTextAsync(filename).Result;
    }

мой вопрос, что я сделал неправильно, и я сделал некоторые неправильно, то как я могу получить файл PDF ??как ??

1 Ответ

0 голосов
/ 10 июля 2019

Прежде всего, пожалуйста, проверьте, можете ли вы получить доступ к файлу из живого окружения: например,

https://ipfs.infura.io/ipfs/QmNtg1uDy1A71udMa2ipTfKghArRQFspfFkncunamW29SA

https://ipfs.io/ipfs/

если файл был загружен правильно, вы можете выполнить это действие в пакете IpfsClient:

  1. Определить свойство, которое ссылается на ipfs env (например, через infura)

    _ipfsClient = new IpfsClient("https://ipfs.infura.io:5001");

  2. Введите метод загрузки файла по хешу

    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();
            }
        }
    }
Если вы используете веб-API - введите контроллер для возврата точно pdf
    public async Task<IActionResult> Get(string hash)
    {
        var data = await _ipfsDownloadService.DownloadAsync(hash);
        return File(data, "application/pdf");
    }
...