0Pricing
React Academy · Pelajaran

Input File dan Membaca Data File

Tangani , baca metadata file, dan pratinjau gambar dengan FileReader.

Input File dan Membaca Data File adalah pelajaran React Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar React Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus React Academy mencakup 4 pelajaran total.

Selamat Datang

Dalam pelajaran ini, Anda akan menangani input berkas di React, membaca metadata berkas, menampilkan pratinjau gambar yang dipilih, dan menggunakan API FileReader untuk memproses isi berkas.

Elemen Input Berkas

Elemen `` tidak dapat dikontrol oleh properti value React—elemen ini selalu tak terkontrol. Baca berkas yang dipilih dari `e.target.files[0]` dalam penangan onChange.
function FileInput() {
  const handleChange = (e) => {
    const file = e.target.files[0];
    console.log(file.name, file.size, file.type);
  };
  return <input type="file" onChange={handleChange} />;
}

Properti Objek Berkas

Objek File memperluas Blob dan memiliki: `name` (nama berkas), `size` (ukuran dalam bita), `type` (jenis MIME seperti 'image/png'), dan `lastModified` (stempel waktu). Baca semua informasi ini sebelum mengunggah atau memproses berkas.

Menerima Jenis Berkas Tertentu

Gunakan atribut `accept` untuk memberi petunjuk kepada peramban tentang jenis berkas yang perlu ditampilkan. Gabungkan jenis MIME dan ekstensi. Selalu lakukan validasi di sisi server juga.
<input type="file" accept="image/png,image/jpeg,.pdf" />

Memilih Beberapa Berkas

Tambahkan atribut `multiple` agar pengguna dapat memilih beberapa berkas. `e.target.files` mengembalikan FileList—ubah menjadi larik dengan `Array.from()` agar dapat menggunakan metode larik.
<input type="file" multiple />

const files = Array.from(e.target.files);

Menampilkan Pratinjau Gambar dengan URL.createObjectURL

Buat URL pratinjau sementara untuk berkas gambar yang dipilih menggunakan `URL.createObjectURL(file)`. Ingatlah untuk mencabutnya dengan `URL.revokeObjectURL` setelah selesai agar memori terbebaskan.
const [preview, setPreview] = useState(null);

const handleChange = (e) => {
  const file = e.target.files[0];
  if (file) setPreview(URL.createObjectURL(file));
};

useEffect(() => {
  return () => { if (preview) URL.revokeObjectURL(preview); };
}, [preview]);

{preview && <img src={preview} alt="Preview" />}

Membaca Isi Berkas dengan FileReader

Gunakan API `FileReader` untuk membaca isi berkas sebagai teks atau URL data. Panggil `reader.readAsText(file)` untuk berkas teks atau `reader.readAsDataURL(file)` untuk berkas biner seperti gambar.
const reader = new FileReader();
reader.onload = (e) => setContent(e.target.result);
reader.readAsText(file);

Validasi Ukuran Berkas

Validasi ukuran berkas di sisi klien sebelum mengunggahnya. Tolak berkas yang lebih besar daripada ambang batas dan tampilkan pesan kesalahan.
const MAX_SIZE = 5 * 1024 * 1024; // 5 MB
if (file.size > MAX_SIZE) {
  setError('File must be under 5 MB');
  return;
}

Mengosongkan Input Berkas

Anda tidak dapat mengosongkan input berkas dengan menetapkan nilainya karena input tersebut hanya-baca. Sebagai gantinya, atur ulang secara imperatif melalui ref atau dengan mengubah properti `key` input untuk memaksa pemasangan ulang.
const inputRef = useRef();
const clear = () => { inputRef.current.value = ''; };
<input ref={inputRef} type="file" />

Menyimpan Referensi Berkas dalam Status

Simpan objek File itu sendiri dalam status, bukan hanya nama atau URL-nya. Dengan begitu, Anda dapat mengunggah berkas nanti tanpa membacanya kembali dari DOM.
const [file, setFile] = useState(null);
const handleChange = (e) => setFile(e.target.files[0] || null);

Pemeriksaan Singkat

Metode apa yang membuat URL sementara untuk menampilkan pratinjau berkas gambar yang dipilih di peramban?

Ringkasan

Baca berkas yang dipilih dari e.target.files. Gunakan URL.createObjectURL untuk pratinjau, FileReader untuk membaca isi, validasi ukuran di sisi klien, dan simpan objek File dalam status untuk diunggah nanti.

Berikutnya

Pelajaran berikutnya: **Antarmuka Unggah Berkas Seret & Lepas** — Anda akan membuat zona seret dan lepas dengan umpan balik visual menggunakan peristiwa React.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Input File dan Membaca Data File” gratis?

Ya — teks lengkap “Input File dan Membaca Data File” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus React Academy, upgrade ke CoddyKit PRO. Kursus React Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Input File dan Membaca Data File”?

Tangani , baca metadata file, dan pratinjau gambar dengan FileReader. Kamu berlatih React Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai React Academy?

Tidak diperlukan pengalaman sebelumnya. React Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.

Berapa lama pelajaran “Input File dan Membaca Data File” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran React Academy ini?

Ya. Setiap pelajaran React Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Input Tak Terkontrol dengan useRef
  2. Input File dan Membaca Data File
  3. Antarmuka Unggah File dengan Seret dan Lepas
  4. Mengunggah File ke API Backend
← Kembali ke React Academy