[C#] 可程式化的免費圖床方案 - Pinata

2024-08-27

今天分享目前找到的圖床最後一篇,這服務比較特別,他主打基於 Web 3 + IPFS 上儲存和檢索媒體的服務

就是 Pinata ,我網路上查一下 Pinata 的意思 : 皮納塔(西班牙語:Piñata),是一種紙糊的容器,其內裝滿玩具與糖果,於節慶或生日宴會上懸掛起來,

讓人用棍棒打擊,打破時玩具與糖果會掉落下來。

蠻有趣的名稱接下來就是我們看上傳圖片的部份,畢竟我們是以圖床為主


1.  一樣你得先註冊註冊之後,你就可以在這裡拿到 API Keys : https://app.pinata.cloud/developers/api-keys


首先你要 Generate 一組新的 API Key 關鍵是要拿到這 個欄位 JWT 




2.  拿到 JWT 後接下來就是上傳的部份

C# code:

var client = new HttpClient(); var requestUri = "https://api.pinata.cloud/pinning/pinFileToIPFS"; var JWT="{JWT}"; client.DefaultRequestHeaders.Add("Authorization", $"Bearer {JWT}"); // 構建 MultipartFormDataContent using (var content = new MultipartFormDataContent()) { var fileStream = File.OpenRead(filePath); //保留原始檔名 var fileName = new FileInfo(filePath).Name; content.Add(new StreamContent(fileStream), "file", Path.GetFileName(filePath)); // 添加 pinataMetadata content.Add(new StringContent("{\"name\": \""+ fileName + "\"}"), fileName); // 添加 pinataOptions content.Add(new StringContent("{\"cidVersion\": 1}"), "pinataOptions"); try { // 發送 POST 請求 var response = client.PostAsync(requestUri, content).Result; var responseContent = response.Content.ReadAsStringAsync().Result; // 輸出響應結果 if (response.IsSuccessStatusCode) { //https://gateway.pinata.cloud/ipfs/{CID} return "https://gateway.pinata.cloud/ipfs/" + System.Text.Json.JsonDocument.Parse(responseContent).RootElement.GetProperty("IpfsHash").ToString(); } else { Console.WriteLine($"Upload failed. Status code: {response.StatusCode}"); Console.WriteLine(responseContent); } } catch (Exception ex) { Console.WriteLine($"An error occurred: {ex.Message}"); } finally { fileStream.Dispose(); } } /* JSON Response {"IpfsHash":"bafkreidtuguno237ytbyu7jbhm3h4edqk5oagbj4zojk7xa25pdkzmu6w4","PinSize":188459, "Timestamp":"2024-08-22T09:51:19.710Z","isDuplicate":true} */


最後我們看看免費方案的限制


免費方案,最多只能五百個圖片,總和只能 1G 的空間,每個月只有 10G流量,Request 一萬,簡單的說一樣要配合 CDN 使用

一樣一個中小型配合 CDN 也還算是可以,這邊就推薦給大家


reference:

https://docs.pinata.cloud/quickstart

https://ithelp.ithome.com.tw/articles/10306474



當麻許的碎念筆記 2014 | Donma Hsu Design.