// cloud storage

Upload & Share

Upload file apapun, dapat link langsung yang bisa dibagikan ke siapapun.

⚡ Maks 20MB per file · Powered by Telegram · Gratis

☁️
Klik atau drop file di sini
Semua tipe file didukung · Maks 20MB
📄
Mengupload...0%
✅ Upload berhasil!
↗ Buka File
// riwayat upload (sesi ini)
Belum ada file yang diupload.

// developer

Pakai lewat API

Endpoint ini publik, bisa dipanggil dari luar browser juga — dari script Node.js, bot, atau aplikasi kamu sendiri. Berikut endpoint yang tersedia dan contoh pemakaiannya.

MethodPathKeterangan
POST /api/upload Upload file (multipart/form-data, field file)
GET /api/file/:id Redirect ke file asli berdasarkan id dari hasil upload
upload.mjs
// npm install node-fetch form-data
import fetch from "node-fetch";
import FormData from "form-data";
import fs from "fs";

const form = new FormData();
form.append("file", fs.createReadStream("./foto.png"));

const res = await fetch("https://ruina.z-hiruira.biz.id/api/upload", {
  method: "POST",
  body: form,
  // jangan set Content-Type manual, form-data sudah menentukan boundary-nya sendiri
  headers: form.getHeaders(),
});

const data = await res.json();

if (!data.ok) {
  throw new Error(data.error);
}

console.log("Link file:", data.url);
console.log("Ukuran:", data.size, "bytes");
terminal
# upload file
curl -X POST https://ruina.z-hiruira.biz.id/api/upload \
  -F "file=@./foto.png"

# hasilnya berupa JSON, ambil field "url" buat akses filenya
browser console / frontend
// dari <input type="file"> di HTML
const form = new FormData();
form.append("file", inputEl.files[0]);

const res = await fetch("/api/upload", { method: "POST", body: form });
const data = await res.json();

console.log(data.url); // link file siap dibagikan
response — 200 OK
{
  "ok": true,
  "filename": "foto.png",
  "size": 482311,
  "url": "https://ruina.z-hiruira.biz.id/api/file/AgADBQA...",
  "fileId": "AgADBQA..."
}

// kalau gagal:
{ "ok": false, "error": "pesan errornya di sini" }