Upload File
Upload file publik (video dan jenis lain). Link akan dihasilkan otomatis dan bisa dipakai di mana saja.
Catatan hosting
Setelah di-deploy ke cPanel dan diarahkan ke domain https://apprentice.cyou/, halaman ini dapat diakses langsung dari root domain.
Folder
File di Folder Aktif
API Overview
Form upload ini publik tanpa autentikasi. Untuk integrasi otomatis (n8n) tersedia endpoint khusus dengan API key.
/health
Cek status server.
curl -X GET "{{ORIGIN}}/health"
/upload
Upload file via multipart form. Server akan mengembalikan URL publik.
curl -X POST "{{ORIGIN}}/upload" \
-F "file=@/path/to/video.mp4"
Contoh respons:
{
"success": true,
"url": "{{ORIGIN}}/files/xxxxx.mp4",
"filename": "xxxxx.mp4",
"size": 123456
}
/files/:filename
Akses file yang sudah di-upload. Mendukung header Range untuk video streaming.
curl -L "{{ORIGIN}}/files/xxxxx.mp4" -o output.mp4
Maintenance singkat
- Monitor disk space di server karena file video cukup besar.
- Pastikan cron/interval Node.js tetap aktif agar auto cleanup 3 jam berjalan.
- Jika aplikasi error, lakukan restart Node.js App dari panel cPanel.
- Update dependency Node.js secara berkala dan test di staging sebelum production.
Integrasi n8n
Gunakan endpoint API yang sama langsung dari workflow n8n. Endpoint ini menggunakan header x-api-key untuk autentikasi.
Langkah singkat di n8n
- Pastikan server ini bisa diakses dari n8n (contoh: {{ORIGIN}}).
- Buat environment variable di n8n: $env.FILE_HOSTING_BASE_URL dan $env.FILE_HOSTING_API_KEY.
- Import salah satu template JSON di bawah ini ke n8n, lalu sesuaikan jika perlu.
Template 1: Upload file
Workflow sederhana: Start → HTTP Request (POST /api/files) dengan binary dari node sebelumnya.
Download template upload.jsonTemplate 2: List file aktif
Workflow sederhana: Start → HTTP Request (GET /api/files?status=active) untuk membaca daftar file yang belum expired.
Download template list-active.jsonContoh konfigurasi node HTTP Request (upload)
{
"url": "={{$env.FILE_HOSTING_BASE_URL}}/api/files",
"method": "POST",
"sendBinaryData": true,
"binaryPropertyName": "data",
"sendBody": true,
"headerParametersUi": {
"parameter": [
{
"name": "x-api-key",
"value": "={{$env.FILE_HOSTING_API_KEY}}"
}
]
},
"bodyParametersUi": {
"parameter": [
{ "name": "expiry_minutes", "value": "60" },
{ "name": "meta", "value": "={{JSON.stringify({ source: \"n8n\" })}}" }
]
}
}