Panduan

Cara Menambahkan Unggahan File ke Aplikasi Anda: Penyimpanan, Batas, dan Keamanan

Untuk menambahkan unggahan file ke aplikasi Anda, simpan file di object storage (bucket), bukan di disk server atau di database, dan simpan catatan kecil di database berisi kunci file, nama, ukuran, tipe, dan pemiliknya. Periksa ukuran dan tipe file di server, tentukan sejak awal apakah file bersifat publik (seperti foto produk) atau privat (seperti faktur), dan sajikan file privat hanya setelah memeriksa siapa yang meminta. Di AI app builder, Anda bisa mendeskripsikan fitur unggahan dalam satu prompt; bagian yang penting adalah menguji bahwa file tetap ada setelah deploy ulang dan tidak bisa dibuka oleh orang yang salah.

Tentukan jenis unggahan yang Anda butuhkan

Sebelum membangun, jawab tiga pertanyaan:

  1. File apa? Foto profil, gambar produk, PDF, spreadsheet, audio, video. Ini menentukan batas tipe dan ukuran.
  2. Siapa yang boleh melihatnya? Semua orang (galeri publik) atau hanya pengunggah dan admin (kontrak, dokumen identitas, file klien).
  3. Apa yang terjadi setelah diunggah? Hanya disimpan, menampilkan pratinjau, mengubah ukuran gambar, atau membaca isinya.

Gambar publik dan dokumen privat membutuhkan penyiapan yang berbeda, jadi putuskan ini lebih dulu.

Di mana file sebaiknya disimpan

OpsiCara kerjaCocok untukYang perlu diwaspadai
Object storage (bucket)File disimpan di layanan yang dibuat untuknya; database Anda menyimpan kunci atau URLHampir semua aplikasiAturan akses harus diatur dengan benar
Penyimpanan dari platformApp builder atau host Anda mengaktifkan bucket untuk AndaAplikasi yang dibangun di platform tersebutBatas dan harga mengikuti platform
Disk serverFile ditulis ke sistem file server aplikasiHanya pengembangan lokalSering terhapus saat restart atau deploy ulang
Di dalam databaseByte file disimpan di sebuah tabelHampir tidak pernahMembengkakkan database, memperlambat cadangan
Widget unggah pihak ketigaLayanan uploader yang di-hosting menangani seluruh alurMedia berat, transformasi gambarVendor, akun, dan tagihan lain

Untuk sebagian besar aplikasi, object storage ditambah catatan database adalah jawaban yang tepat. Baris database inilah yang diquery aplikasi Anda ("tampilkan dokumen pengguna ini"); bucket hanya menyimpan byte-nya.

File publik vs privat

  • File publik (foto produk, gambar blog, avatar) bisa disajikan dari URL publik. Siapa pun yang punya tautannya bisa membukanya, dan itu tidak masalah untuk jenis konten ini.
  • File privat (faktur, kontrak, dokumen medis atau identitas, hasil kerja klien) tidak boleh pernah punya URL publik yang bisa ditebak. Server memeriksa bahwa pengguna yang sedang masuk memiliki file tersebut atau punya izin, lalu mengalirkannya kembali atau mengembalikan URL bertanda tangan: tautan yang hanya berlaku sebentar.

Bug yang umum dan serius adalah file privat yang disimpan di bucket publik dengan nama yang bisa diprediksi. Siapa pun yang menebak /uploads/invoice-102.pdf mendapatkan faktur orang lain.

Contoh prompt

Unggahan gambar publik:

Biarkan admin mengunggah hingga 5 foto produk per produk. Terima JPG, PNG, dan WebP masing-masing hingga 5 MB. Simpan file di penyimpanan file, simpan kunci, ukuran, dan urutan setiap file di tabel product_images, dan tampilkan thumbnail dengan tombol hapus. Validasi tipe dan ukuran di server, bukan hanya di browser.

Unggahan dokumen privat:

Tambahkan halaman Dokumen untuk klien yang sudah masuk. Klien bisa mengunggah PDF hingga 20 MB. File bersifat privat: simpan di penyimpanan file, simpan ID pemilik, nama file asli, ukuran, dan waktu unggah di tabel documents, dan hanya izinkan pemilik dan admin untuk mengunduhnya. Unduhan melewati route server yang memeriksa izin. Jangan pernah membuat URL publik untuk file ini.

Lanjutan yang berguna:

Tampilkan bilah progres selama unggahan dan pesan error yang jelas jika file terlalu besar atau tipenya salah.

Saat baris dokumen dihapus, hapus juga file yang tersimpan.

Langkah demi langkah

  1. Pilih tipe dan batas ukuran untuk setiap kolom unggahan. Bersikaplah spesifik: "PDF hingga 20 MB", bukan "dokumen".
  2. Aktifkan penyimpanan. Di AI builder, minta unggahan dan builder akan menyiapkan penyimpanannya; di tempat lain, buat bucket dan tambahkan kredensialnya sebagai secret sisi server.
  3. Buat tabel database untuk catatan file: ID, pemilik, kunci penyimpanan, nama asli, tipe, ukuran, waktu dibuat.
  4. Bangun route unggahan di server: pastikan pengguna sudah masuk, periksa tipe dan ukuran, buat kunci penyimpanan yang aman (bukan nama file pengguna), simpan file, lalu masukkan catatannya.
  5. Bangun jalur unduh atau tampilan: URL publik untuk file publik; route yang memeriksa izin atau URL bertanda tangan untuk file privat.
  6. Bangun UI: pemilih file, drag and drop jika berguna, progres, pratinjau, error.
  7. Tangani penghapusan agar menghapus catatan juga menghapus file yang tersimpan.
  8. Uji: unggah, muat ulang, deploy ulang atau publikasikan, lalu periksa file masih bisa dimuat. Setelah itu masuk sebagai pengguna lain dan coba buka file privat pengguna pertama.

Kesalahan umum

  • Menulis unggahan ke disk server. Ini berfungsi saat pengembangan, lalu file lenyap setelah restart atau deploy ulang.
  • Mempercayai pemeriksaan di browser. Pengaturan "accept" pada input file hanyalah petunjuk, bukan keamanan. Periksa tipe dan ukuran di server.
  • Memakai nama file pengguna sebagai kunci penyimpanan. Nama bisa bertabrakan dan bisa berisi karakter aneh. Buat kunci unik dan simpan nama asli secara terpisah.
  • Bucket publik untuk file privat. Lihat di atas; ini yang paling sering jadi berita.
  • Mengizinkan tipe file apa pun. File HTML atau SVG yang disajikan dari domain Anda bisa menjalankan skrip dalam beberapa penyiapan. Terima hanya tipe yang Anda butuhkan.
  • Tidak ada batas ukuran. Satu unggahan besar bisa menghabiskan kuota penyimpanan Anda atau membuat permintaan timeout.
  • File yatim. Menghapus baris database tetapi tidak filenya perlahan memenuhi penyimpanan yang Anda bayar.
  • Lupa ponsel. Foto dari ponsel bisa besar dan dalam format seperti HEIC; putuskan apakah akan menerimanya atau mengonversinya.

Checklist

  • File disimpan di object storage, bukan di disk server atau database
  • Setiap file punya catatan database dengan pemilik, kunci, nama, tipe, dan ukuran
  • Tipe dan ukuran diperiksa di server
  • Kunci penyimpanan dibuat secara otomatis, tidak diambil dari nama file
  • File privat hanya disajikan setelah pemeriksaan izin
  • Pengguna lain tidak bisa membuka file privat Anda, bahkan dengan tautannya
  • Menghapus catatan juga menghapus file
  • File masih bisa dimuat setelah publikasi atau deploy ulang
  • Error unggahan ditampilkan dengan jelas, termasuk di ponsel

Unggahan file di Mythex

Mythex bisa mengaktifkan penyimpanan file untuk sebuah proyek secara otomatis saat aplikasi Anda membutuhkan unggahan, jadi Anda tidak perlu menyiapkan bucket secara manual. Anda juga bisa mengetik /storage di chat. Fitur ini tersedia di paket Free dan Pro, dengan batas 1 GB di paket Free, dan Anda bisa melihat statusnya di Settings → Storage.

Dokumentasi menegaskan bahwa hosting yang dipublikasikan bukan filesystem lokal yang permanen, jadi mintalah agen untuk memakai penyimpanan platform alih-alih menyimpan ke disk. File yang tersimpan dan unduhan dibayar dari saldo kredit Anda, berdasarkan ukuran dan seberapa banyak yang diunduh; paket Pro membayar setengah tarif Free. Lihat Penyimpanan file di dokumentasi.

Unggahan biasanya berjalan beriringan dengan database untuk catatan file dan login untuk file privat. Jika Anda membangun tempat klien saling bertukar dokumen, lihat cara membangun portal klien, dan jalankan checklist keamanan sebelum peluncuran.

Pertanyaan

Di mana file yang diunggah sebaiknya disimpan?

Di object storage (layanan yang dibuat khusus untuk file, sering disebut bucket), bukan di disk server aplikasi dan bukan di dalam database. Di database, simpan hanya kunci atau URL file, ditambah detail seperti nama, ukuran, dan pemilik.

Mengapa file yang saya unggah hilang setelah saya publikasikan atau deploy ulang?

Sebagian besar platform hosting tidak menyimpan disk lokal secara permanen: saat aplikasi restart atau di-deploy ulang, file yang ditulis ke disknya hilang. Simpan unggahan ke object storage sebagai gantinya.

Bagaimana cara menjaga file yang diunggah tetap privat?

Jangan membuat file bisa dibaca publik. Pastikan server Anda memeriksa bahwa pengguna yang sedang masuk boleh melihat file tersebut, lalu kirimkan filenya atau kembalikan tautan bertanda tangan berumur pendek ke file itu.

Apakah Mythex mendukung unggahan file?

Ya. Mythex bisa mengaktifkan penyimpanan file untuk sebuah proyek saat aplikasi membutuhkan unggahan, di paket Free dan Pro, dengan batas 1 GB di paket Free. Anda meminta fitur unggahan kepada agen atau mengetik /storage.

Mythex · Pricing · Bangun apa pun dengan AI · Template website dan aplikasi · Mythex dibandingkan · Glosarium membuat aplikasi dengan AI · Alat gratis untuk membuat aplikasi dengan AI · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Հայերեն Íslenska Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių Latviešu Македонски മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Русский Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(香港) 繁體中文(台灣)