File Upload Concepts
Memetakan file input, storage object, metadata, permission, serta loading/error UI agar upload feature dapat diintegrasikan dan di-QA dengan aman.
Tujuan belajar
- Membedakan file object di storage dari metadata di database
- Menjelaskan flow upload dari pilihan file sampai UI success/error
- Memahami client check sebagai UX feedback, bukan security enforcement
- Menentukan state serta evidence yang perlu diuji pada upload feature
Isi lesson
6 blok- 1.File dan informasi tentang file biasanya disimpan terpisahBelum selesaiWajib
- 2.Flow attachment yang dapat dibaca frontendBelum selesaiWajib
- 3.Coding practiceBelum selesaiWajib
- 4.Cek pemahamanBelum selesaiWajib
- 5.Client-side file check bukan security gateBelum selesaiWajib
- 6.RingkasanBelum selesaiWajib
File dan informasi tentang file biasanya disimpan terpisah
WajibSaat learner menambahkan attachment PDF pada course note, browser memilih File dari input. Client dapat memberi feedback awal seperti ukuran atau jenis file yang diharapkan, lalu mengirim file sesuai upload contract. Storage service menyimpan object file, sedangkan database dapat menyimpan metadata seperti attachment id, course_id, owner id, object path, file name yang aman ditampilkan, content type, dan ukuran. UI kemudian memperbarui daftar attachment atau memberi recovery bila upload gagal.
File input adalah untrusted input. Validasi client membantu experience dan menghindari request yang jelas salah, tetapi server/storage policy tetap perlu memeriksa identity, authorization, limit, serta aturan yang relevan. Jangan menyebut preview browser sebagai bukti file aman, jangan menjadikan file name sebagai identity user, dan jangan memasukkan secret upload credential ke client code.
Bagian ini memengaruhi progres lesson.
Flow attachment yang dapat dibaca frontend
Wajib1. User memilih file melalui input.
2. UI memberi feedback size/type awal dan state uploading.
3. Browser mengirim file sesuai upload contract.
4. Server atau storage policy memeriksa identity, permission, dan limits.
5. Storage menyimpan object file; database menyimpan metadata serta ownership.
6. UI refetch atau menerima hasil lalu menampilkan success, preview aman, atau recovery error.FormData dapat merepresentasikan field form dan file untuk request multipart sesuai contract. Namun detail endpoint, signed upload, scanning, preview processing, dan serving URL ditentukan backend/storage provider. Frontend bertanggung jawab memberi state yang jelas, mengirim input sesuai contract, dan tidak menampilkan file sebagai berhasil sebelum result yang dipercaya diterima.
Bagian ini memengaruhi progres lesson.
Coding practice
WajibDibuka di workspace khususMap course attachment upload flow
Susun flow attachment yang memisahkan file object, metadata, security boundary, dan UI state.
Tujuan awal: Fokus di tab TS.
Practice ini dibuka di workspace khusus. Buka practice untuk memakai editor, preview, dan cek otomatis.
Tombol selesai aktif setelah semua validasi wajib lolos.
Cek pemahaman
WajibJawab duluCek pemahaman singkat
Manakah contoh metadata attachment, bukan object file itu sendiri?
Progres lesson naik setelah jawaban benar.
Peringatan
WajibClient-side file check bukan security gate
Mengecek extension, MIME type, atau size di browser berguna untuk feedback cepat, tetapi input dapat dimanipulasi dan browser tidak menjadi otoritas keamanan. Server/storage tetap menentukan file mana yang diterima, siapa yang boleh upload atau membaca, serta bagaimana file diproses. Laporkan gagal upload dengan request context dan error aman, bukan dengan menyimpan file credential atau raw response sensitif di UI.
Bagian ini memengaruhi progres lesson.
Ringkasan
Wajib- Storage menyimpan object file; database menyimpan metadata, relation, dan ownership.
- Upload flow membutuhkan selected, uploading, success, dan error/recovery UI state.
- Client check membantu UX, tetapi server/storage policy tetap menegakkan security dan limits.
- File preview atau nama file bukan bukti file aman atau user authorized.
- Berikutnya, Uji Kompetensi menyatukan SQL, relationship, service boundary, cache, dan file upload flow.
Bagian ini memengaruhi progres lesson.
Langkah berikutnya
Selesaikan bagian penting lesson ini
Lanjutkan blok wajib berikutnya: File dan informasi tentang file biasanya disimpan terpisah.