Integration Recipes

Express / Node.js Backend Integration

How to accept file uploads in an Express.js backend using Multer in memory and forward directly to Cloudizero.

Installation

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

Express Route Handler

Using multer.memoryStorage() allows you to pass in-memory buffer chunks straight into cz.storage.upload() without touching local disks:

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 handling multipart uploads
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");
});