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/expressExpress 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");
});