Skip to content

CAR Import (DAG Import)

Importuokite visus IPFS DAG vienu uzklausos metu naudodami CAR (Content Addressable aRchive) failus. Jusu CID issaugomi tiksliai — be pakartotinio skaidymo ar pakartotinio maisikymo.

Kas yra CAR failas?

CAR failas supakuoja visa IPFS katalogu medi arba DAG i viena nesama archyva. Kiekvienas blokas saugomas su originaliu CID, todel paslauga importuoja viska tokia, koks jis yra. Tai reiskia:

  • CID issaugojimas — apskaiciuokite CID lokaliai, patikrinkite, ar paslauga grazina tiksliai ta pati CID
  • Masinis ikelimas — ikelkite simtus failu viena uzklausa, o ne po viena
  • Teikejo migracija — eksportuokite DAG is kito teikejo, importuokite i IPFS Ninja su identiskais CID
  • Pasirinktiniai DAG — tiesiogiai ikelkite bet kokia IPLD duomenu struktura

REST API

POST /upload/new

Tas pats endpoint kaip ir iprastiems ikelimams — pridekite car: true, kad nurodytumete CAR importa.

Uzklausos turinys

ParametrasTipasPrivalomasAprasymas
contentstringTaipBase64 koduotas CAR failas
carbooleanTaipNustatykite i true, kad igalintumete CAR importa
descriptionstringNeTrumpas importo aprasymas
folderIdstringNeAplanko ID importuotam turiniui organizuoti
metadataobjectNePasirinktines rakto-reiksmes poros (tos pacios taisykles kaip iprastiems ikelimams)

Pavyzdys: Importuoti CAR faila su curl

1 zingsnis: Sukurkite CAR faila is vietinio katalogo naudodami ipfs-car:

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

2 zingsnis: Ikelkite CAR faila:

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\"
  }"

Pavyzdys: Importuoti CAR faila su JavaScript

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);

Pavyzdys: Importuoti CAR faila su Python

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"])

Atsakymas 200 OK

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

S3-Compatible API

Naudokite x-amz-meta-import: car antraste PutObject uzklausoje, kad importuotumete CAR faila per S3 API.

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" }   // ← paleidzia CAR importa
}));

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

MCP Server

Irankis ipfs_import_car yra prieinamas 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 failu kurimas

Is katalogo (rekomenduojama)

Naudokite ipfs-car CLI iranki:

bash
# Install
npm install -g ipfs-car

# Pack a directory into a CAR file
ipfs-car pack ./my-directory -o my-archive.car

# Check the root CID before uploading
ipfs-car roots my-archive.car
# bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi

Is veikiancios IPFS mazgo

Eksportuokite bet kuri CID kaip CAR faila naudodami Kubo CLI:

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

Programiskai su JavaScript

Naudokite @ipld/car biblioteka:

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 vientisumo tikrinimas

Pagrindine CAR importo nauda yra CID issaugojimas. Galite patikrinti, ar sakninis CID sutampa pries ir po ikelimo:

bash
# 1. Pack directory and note the root CID
ipfs-car pack ./my-nft-collection -o collection.car
ipfs-car roots collection.car
# bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi

# 2. Upload to 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 sutampa — turinys importuotas tiksliai taip, kaip buvo sukurtas lokaliai

Migracija is kito teikejo

Is Pinata

bash
# Export from Pinata using IPFS gateway
ipfs dag export QmYourCID > export.car

# Import to 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}"

Is Filebase

bash
# Filebase supports CAR export via their S3 API
aws s3 cp s3://your-bucket/your-file.car export.car \
  --endpoint-url https://s3.filebase.com

# Import to 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}"

Apribojimai

ApribojimasReiksme
Maksimalus CAR failo dydis100 MB
Maksimali viena saknisTuri tureti bent viena saknini CID
CAR formatasCARv1 (universaliai palaikomas)
PrieinamumasVisi planai (Dharma, Bodhi, Nirvana)

Taikomi jusu plano saugyklos ir failu skaiciaus apribojimai. Importuotas DAG skaiciuojamas kaip vienas failo irasas, o CAR failo dydis atimamas is jusu saugyklos kvotos.

Triktiu salinimas

"invalid CAR file: too small"

Ikeltas turinys yra mazesnis nei 40 baitu, o tai per maza galiojanciam CAR failui. Isitikinkite, kad siunciate visa Base64 koduota CAR turini.

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

Iskoduotas CAR failas virsija 100 MB. Padalinkite turini i kelis mazesnius CAR failus naudodami carbites paketa arba ikelkite failus atskirai.

"dag/import did not return a root CID"

IPFS mazgas negalejo apdoroti CAR failo. Patikrinkite, ar failas yra galiojantis CARv1 archyvas:

bash
ipfs-car roots my-archive.car

Jei si komanda nepavyksta, CAR failas yra sugadintas. Sugeneruokite ji is naujo su ipfs-car pack arba ipfs dag export.

"not enough storage"

Pasiektas jusu plano saugyklos limitas. Istrinkite nenaudojamus failus arba atnaujinkite savo plana adresu ipfs.ninja/pricing.