Resep Integrasi

Integrasi Backend Express / Node.js

Cara menerima unggahan file di backend Express.js menggunakan memori Multer dan meneruskannya langsung ke Cloudizero.

Instalasi

bash
npm install express multer @cloudizero/sdk @types/multer @types/express

Handler Route Express

Menggunakan multer.memoryStorage() memungkinkan Anda meneruskan potongan buffer di memori langsung ke cz.storage.upload() tanpa perlu menulis ke disk lokal server:

server.ts
import express from "express";
import multer from "multer";
import { Cloudizero } from "@cloudizero/sdk";

const app = express();
const upload = multer({ storage: multer.memoryStorage() });

const cz = new Cloudizero({
  apiKey: process.env.CLOUDIZERO_API_KEY!,
});

// Endpoint untuk menangani upload multipart
app.post("/api/upload-media", upload.single("media"), async (req, res) => {
  try {
    if (!req.file) {
      return res.status(400).json({ error: "No file provided" });
    }

    const asset = await cz.storage.upload({
      file: req.file.buffer,
      fileName: req.file.originalname,
      projectId: process.env.CLOUDIZERO_PROJECT_ID!,
      mimeType: req.file.mimetype,
    });

    return res.status(200).json({
      success: true,
      assetId: asset.id,
      url: asset.url,
    });
  } catch (error) {
    console.error("Storage upload failed:", error);
    return res.status(500).json({ error: "Failed to upload asset" });
  }
});

app.listen(3000, () => {
  console.log("Server running on port 3000");
});