Skip to content

CAR Import (DAG Import)

CAR (Content Addressable aRchive) फाइलों का उपयोग करके एक ही अनुरोध में संपूर्ण IPFS DAG आयात करें। आपके CID बिल्कुल संरक्षित रहते हैं — कोई री-चंकिंग या री-हैशिंग नहीं।

CAR फाइल क्या है?

CAR फाइल एक संपूर्ण IPFS डायरेक्टरी ट्री या DAG को एक पोर्टेबल आर्काइव में पैकेज करती है। प्रत्येक ब्लॉक अपने मूल CID के साथ संग्रहीत होता है, इसलिए सेवा सब कुछ जैसा है वैसा ही आयात करती है। इसका मतलब है:

  • CID संरक्षण — CID को स्थानीय रूप से गणना करें, सत्यापित करें कि सेवा बिल्कुल वही CID लौटाती है
  • बैच अपलोड — एक-एक करके के बजाय एक अनुरोध में सैकड़ों फाइलें अपलोड करें
  • प्रदाता माइग्रेशन — किसी अन्य प्रदाता से DAG निर्यात करें, समान CID के साथ IPFS Ninja में आयात करें
  • कस्टम DAG — कोई भी IPLD डेटा संरचना सीधे अपलोड करें

REST API

POST /upload/new

नियमित अपलोड के समान endpoint — CAR आयात को इंगित करने के लिए car: true जोड़ें।

अनुरोध बॉडी

पैरामीटरप्रकारआवश्यकविवरण
contentstringहाँBase64-एन्कोडेड CAR फाइल
carbooleanहाँCAR आयात सक्षम करने के लिए true पर सेट करें
descriptionstringनहींआयात का संक्षिप्त विवरण
folderIdstringनहींआयातित सामग्री को व्यवस्थित करने के लिए फोल्डर ID
metadataobjectनहींकस्टम की-वैल्यू पेयर (नियमित अपलोड के समान नियम)

उदाहरण: curl के साथ CAR फाइल आयात करें

चरण 1: ipfs-car का उपयोग करके स्थानीय डायरेक्टरी से CAR फाइल बनाएं:

bash
npx ipfs-car pack ./my-directory -o my-archive.car

चरण 2: CAR फाइल अपलोड करें:

bash
curl -X POST https://api.ipfs.ninja/upload/new \
  -H "X-Api-Key: bws_your_api_key_here" \
  -H "Content-Type: application/json" \
  -d "{
    \"content\": \"$(base64 -w0 my-archive.car)\",
    \"car\": true,
    \"description\": \"My directory import\"
  }"

उदाहरण: JavaScript के साथ CAR फाइल आयात करें

javascript
import fs from "fs";

const carBuffer = fs.readFileSync("my-archive.car");
const base64Content = carBuffer.toString("base64");

const response = await fetch("https://api.ipfs.ninja/upload/new", {
  method: "POST",
  headers: {
    "X-Api-Key": "bws_your_api_key_here",
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
    content: base64Content,
    car: true,
    description: "My directory import"
  })
});

const result = await response.json();
console.log("Root CID:", result.cid);
console.log("Gateway:", result.uris.url);

उदाहरण: Python के साथ CAR फाइल आयात करें

python
import requests
import base64

with open("my-archive.car", "rb") as f:
    car_content = base64.b64encode(f.read()).decode()

response = requests.post(
    "https://api.ipfs.ninja/upload/new",
    headers={
        "X-Api-Key": "bws_your_api_key_here",
        "Content-Type": "application/json"
    },
    json={
        "content": car_content,
        "car": True,
        "description": "My directory import"
    }
)

result = response.json()
print("Root CID:", result["cid"])
print("Gateway:", result["uris"]["url"])

प्रतिक्रिया 200 OK

json
{
  "cid": "bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi",
  "sizeMB": 4.2,
  "car": true,
  "uris": {
    "ipfs": "ipfs://bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi",
    "url": "https://ipfs.ninja/ipfs/bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi"
  }
}

S3-संगत API

S3 API के माध्यम से CAR फाइल आयात करने के लिए PutObject अनुरोध पर x-amz-meta-import: car हेडर का उपयोग करें।

javascript
import { S3Client, PutObjectCommand } from "@aws-sdk/client-s3";
import fs from "fs";

const s3 = new S3Client({
  endpoint: "https://s3.ipfs.ninja",
  credentials: {
    accessKeyId: "bws_628bba35",
    secretAccessKey: "bws_628bba35e9e0079d9ff9c392b1b55a7b"
  },
  region: "us-east-1",
  forcePathStyle: true
});

const result = await s3.send(new PutObjectCommand({
  Bucket: "my-project",
  Key: "my-archive.car",
  Body: fs.readFileSync("my-archive.car"),
  ContentType: "application/vnd.ipld.car",
  Metadata: { import: "car" }   // ← CAR आयात ट्रिगर करता है
}));

console.log("Root CID:", result.ETag);

MCP Server

ipfs_import_car टूल MCP Server (v1.3.0+) में उपलब्ध है:

You: Import my-archive.car to IPFS
Claude: [calls ipfs_import_car with base64 content]
     → Root CID: bafybeig... — https://ipfs.ninja/ipfs/bafybeig...

CAR फाइलें बनाना

डायरेक्टरी से (अनुशंसित)

ipfs-car CLI टूल का उपयोग करें:

bash
# इंस्टॉल करें
npm install -g ipfs-car

# डायरेक्टरी को CAR फाइल में पैक करें
ipfs-car pack ./my-directory -o my-archive.car

# अपलोड करने से पहले रूट CID जाँचें
ipfs-car roots my-archive.car
# bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi

चल रहे IPFS नोड से

Kubo CLI का उपयोग करके किसी भी CID को CAR फाइल के रूप में निर्यात करें:

bash
ipfs dag export QmXyz... > my-archive.car

JavaScript के साथ प्रोग्रामेटिक रूप से

@ipld/car लाइब्रेरी का उपयोग करें:

javascript
import { CarWriter } from "@ipld/car";
import { CID } from "multiformats/cid";
import * as raw from "multiformats/codecs/raw";
import { sha256 } from "multiformats/hashes/sha2";

// Create blocks
const block1 = new TextEncoder().encode("Hello, IPFS!");
const hash1 = await sha256.digest(block1);
const cid1 = CID.create(1, raw.code, hash1);

// Write CAR
const { writer, out } = CarWriter.create([cid1]);
writer.put({ cid: cid1, bytes: block1 });
writer.close();

// Collect output
const chunks = [];
for await (const chunk of out) chunks.push(chunk);
const carBuffer = Buffer.concat(chunks);

CID अखंडता सत्यापन

CAR आयात का मुख्य लाभ CID संरक्षण है। आप अपलोड से पहले और बाद में रूट CID के मेल की पुष्टि कर सकते हैं:

bash
# 1. डायरेक्टरी पैक करें और रूट CID नोट करें
ipfs-car pack ./my-nft-collection -o collection.car
ipfs-car roots collection.car
# bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi

# 2. IPFS Ninja पर अपलोड करें
curl -s -X POST https://api.ipfs.ninja/upload/new \
  -H "X-Api-Key: bws_your_api_key" \
  -H "Content-Type: application/json" \
  -d "{\"content\": \"$(base64 -w0 collection.car)\", \"car\": true}" \
  | jq .cid
# "bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi"
# ✓ CID मेल खाते हैं — सामग्री ठीक वैसे ही आयात हुई जैसे स्थानीय रूप से बनाई गई थी

किसी अन्य प्रदाता से माइग्रेशन

Pinata से

bash
# IPFS गेटवे के माध्यम से Pinata से निर्यात करें
ipfs dag export QmYourCID > export.car

# IPFS Ninja में आयात करें
curl -X POST https://api.ipfs.ninja/upload/new \
  -H "X-Api-Key: bws_your_api_key" \
  -H "Content-Type: application/json" \
  -d "{\"content\": \"$(base64 -w0 export.car)\", \"car\": true}"

Filebase से

bash
# Filebase अपने S3 API के माध्यम से CAR निर्यात का समर्थन करता है
aws s3 cp s3://your-bucket/your-file.car export.car \
  --endpoint-url https://s3.filebase.com

# IPFS Ninja में आयात करें
curl -X POST https://api.ipfs.ninja/upload/new \
  -H "X-Api-Key: bws_your_api_key" \
  -H "Content-Type: application/json" \
  -d "{\"content\": \"$(base64 -w0 export.car)\", \"car\": true}"

सीमाएँ

सीमामान
अधिकतम CAR फाइल आकार100 MB
अधिकतम एकल रूटकम से कम एक रूट CID आवश्यक
CAR प्रारूपCARv1 (सार्वभौमिक रूप से समर्थित)
उपलब्धतासभी योजनाएँ (Dharma, Bodhi, Nirvana)

आपकी योजना की स्टोरेज और फाइल गणना सीमाएँ लागू होती हैं। आयातित DAG एक फाइल प्रविष्टि के रूप में गिना जाता है, और CAR फाइल का आकार आपके स्टोरेज कोटा से घटाया जाता है।

समस्या निवारण

"invalid CAR file: too small"

अपलोड की गई सामग्री 40 बाइट से कम है, जो एक वैध CAR फाइल के लिए बहुत छोटी है। सुनिश्चित करें कि आप पूर्ण base64-एन्कोडेड CAR सामग्री भेज रहे हैं।

"File too large. Maximum upload size is 100 MB."

डिकोड की गई CAR फाइल 100 MB से अधिक है। carbites पैकेज का उपयोग करके अपनी सामग्री को कई छोटी CAR फाइलों में विभाजित करें, या फाइलें व्यक्तिगत रूप से अपलोड करें।

"dag/import did not return a root CID"

IPFS नोड CAR फाइल को प्रोसेस नहीं कर सका। सत्यापित करें कि फाइल एक वैध CARv1 आर्काइव है:

bash
ipfs-car roots my-archive.car

यदि यह कमांड विफल होती है, तो CAR फाइल दूषित है। इसे ipfs-car pack या ipfs dag export से पुनः बनाएँ।

"not enough storage"

आपकी योजना की स्टोरेज सीमा पूरी हो गई है। अनुपयोगी फाइलें हटाएँ या ipfs.ninja/pricing पर अपनी योजना अपग्रेड करें।