Cara Membuat Fitur Upload File Menggunakan React JS

Cara Membuat Fitur Upload File Menggunakan React JS

React JS adalah salah satu alat populer untuk membangun UI pengguna dan merupakan skill yang perlu diketahui. Jika Kamu membangun sesuatu dengan React JS, cepat atau lambat kamu akan menghadapi tantangan dalam mengunggah file. Tapi tenang; menulis logika file upload di React JS sangat mudah, dan artikel ini akan menunjukkan cara melakukannya. Kita akan membahas cara mengunggah satu file dan mengunggah banyak file.

Membuat Upload Single File

Langkah 1: Import React dan Hooks

import React, { useState } from "react";

Mengimpor React dan useState hook dari React. useState digunakan untuk membuat state pada komponen React.

Langkah 2: Membuat Komponen FileUpload

const FileUpload = () => {
  // State untuk menyimpan file yang dipilih
  const [selectedFile, setSelectedFile] = useState();
  // State untuk menandai apakah file telah dipilih
  const [isFilePicked, setIsFilePicked] = useState(false);

Membuat komponen FileUpload yang merupakan komponen fungsional React. Menggunakan useState hook untuk mendefinisikan state selectedFile yang akan menyimpan file yang dipilih oleh pengguna, dan state isFilePicked untuk menandai apakah file telah dipilih atau belum.

Langkah 3: changeHandler - Mengelola Perubahan pada Input File

const changeHandler = (event) => {
  setSelectedFile(event.target.files[0]);
  setIsFilePicked(true);
};

changeHandler adalah fungsi yang dipanggil ketika terjadi perubahan pada input file. Fungsi ini mengupdate selectedFile dengan file yang dipilih dari event onChange dan mengatur isFilePicked menjadi true.

Langkah 4: handleSubmission - Mengirim Data

const handleSubmission = () => {
  const formData = new FormData();
  formData.append("source", selectedFile);

  fetch("https://httpbin.org/post", {
    method: "POST",
    body: formData,
  })
    .then((response) => response.json())
    .then((result) => {
      console.log("Success:", result);
    })
    .catch((error) => {
      console.error(error);
    });
};

handleSubmission adalah fungsi yang dipanggil saat tombol "Submit" ditekan. Fungsi ini membuat objek FormData, menambahkan file yang dipilih ke dalamnya, lalu mengirimkan data ke URL https://httpbin.org/post menggunakan metode POST melalui fetch. Hasilnya kemudian di-log ke konsol.

Langkah 5: Render UI

return (
  <div>
    <h1>Upload Single File Di React</h1>
    <input type="file" name="file" onChange={changeHandler} />
    {/* Menampilkan detail file jika sudah dipilih */}
    {isFilePicked ? (
      <div>
        <p>Nama File: {selectedFile.name}</p>
        <p>Tipe File: {selectedFile.type}</p>
        <p>Size: {selectedFile.size}</p>
      </div>
    ) : (
      <p>Pilih File Untuk Melihat Detail</p>
    )}
    <div>
      <button onClick={handleSubmission}>Submit</button>
    </div>
  </div>
);

Fungsi return merender antarmuka pengguna (UI) untuk komponen FileUpload. Terdapat elemen input dengan tipe file yang akan memicu changeHandler ketika ada perubahan. Selain itu, jika nilai isFilePicked adalah true, informasi detail dari file yang dipilih akan ditampilkan. Tombol "Submit" akan mengtrigger handleSubmission untuk mengirim file yang dipilih.

Berikut adala Kode Full :

import React, { useState } from "react";

const FileUpload = () => {
  const [selectedFile, setSelectedFile] = useState();
  const [isFilePicked, setIsFilePicked] = useState(false);

  const changeHandler = (event) => {
    setSelectedFile(event.target.files[0]);
    setIsFilePicked(true);
  };

  const handleSubmission = () => {
    const formData = new FormData();

    formData.append("source", selectedFile);

    fetch(
      "https://httpbin.org/post",
      {
        method: "POST",
        body: formData,
      }
    )
      .then((response) => response.json())
      .then((result) => {
        console.log("Success:", result);
      })
      .catch((error) => {
        console.error( error);
      });
  };
  return (
    <div>
        <h1>Upload Single File Di React</h1>
      <input type="file" name="file" onChange={changeHandler} />
      {isFilePicked ? (
        <div>
          <p>Nama File: {selectedFile.name}</p>
          <p>Tipe File: {selectedFile.type}</p>
          <p>Size: {selectedFile.size}</p>
        </div>
      ) : (
        <p>Pilih File Untuk Melihat Detail</p>
      )}
      <div>
        <button onClick={handleSubmission}>Submit</button>
      </div>
    </div>
  );
};

export default FileUpload;

Membuat Upload Multiple File

Langkah 1: Import React dan Hooks

import React, { useState } from "react";

Mengimpor React dan useState hook dari React. useState digunakan untuk membuat state pada komponen React.

Langkah 2: Membuat Komponen FileUpload

const FileUpload = () => {
  // State untuk menyimpan file yang dipilih
  const [selectedFiles, setSelectedFiles] = useState([]);
  // State untuk menandai apakah file telah dipilih
  const [isFilePicked, setIsFilePicked] = useState(false);

Membuat komponen FileUpload yang merupakan komponen fungsional React. Menggunakan useState hook untuk mendefinisikan state selectedFiles yang akan menyimpan array file yang dipilih oleh pengguna, dan state isFilePicked untuk menandai apakah file telah dipilih atau belum.

Langkah 3: changeHandler - Mengelola Perubahan pada Input File

const changeHandler = (event) => {
  setSelectedFiles(event.target.files);
  setIsFilePicked(true);
};

changeHandler adalah fungsi yang dipanggil ketika terjadi perubahan pada input file. Fungsi ini mengupdate selectedFiles dengan array file yang dipilih dari event onChange dan mengatur isFilePicked menjadi true.

Langkah 4: handleSubmission - Mengirim Data

const handleSubmission = () => {
  const formData = new FormData();

  for (let i = 0; i < selectedFiles.length; i++) {
    formData.append("source", selectedFiles[i]);
  }

  fetch("https://httpbin.org/post", {
    method: "POST",
    body: formData,
  })
    .then((response) => response.json())
    .then((result) => {
      console.log("Success:", result);
    })
    .catch((error) => {
      console.error(error);
    });
};

handleSubmission adalah fungsi yang dipanggil saat tombol "Submit" ditekan. Fungsi ini membuat objek FormData, menambahkan setiap file yang dipilih ke dalamnya, lalu mengirimkan data ke URL https://httpbin.org/post menggunakan metode POST melalui fetch. Hasilnya kemudian di-log ke konsol.

Langkah 5: Render UI

return (
  <div>
    <h1>Upload Multiple File di React</h1>
    <input type="file" name="file" onChange={changeHandler} multiple />
    {/* Menampilkan jumlah file yang dipilih */}
    {isFilePicked ? (
      <div>
        <p>Jumlah File Terpilih: {selectedFiles.length}</p>
      </div>
    ) : (
      <p>Pilih File untuk Melihat Jumlah</p>
    )}
    <div>
      <button onClick={handleSubmission}>Submit</button>
    </div>
  </div>
);

Fungsi return merender UI untuk komponen FileUpload. Terdapat elemen input dengan tipe file yang mendukung pemilihan multiple file dan akan memicu changeHandler ketika ada perubahan. Selain itu, jika isFilePicked adalah true, informasi jumlah file yang dipilih akan ditampilkan. Tombol "Submit" akan memicu handleSubmission untuk mengirim file-file yang dipilih.

Kesimpulan

Dengan mengikuti artikel ini, kita akan belajar mengenai File Handling di React JS. Tutorial ini sangat berguna bagi teman-teman, cepat atau lambat teman teman harus belajar mengenai File Upload karena merupakan salah satu hal yang penting untuk dipelajari programmer, terkhusus untuk seorang Front-End Developer React JS.

Jika kalian merasa sudah mantap mempelajari File Upload dan mau mencoba di real case projek, silahkan cek tutorial ini ya Menambahkan Fitur Upload Dan Replace File Manga Di React JS.

Jangan lupa untuk follow akun sosial media kami. Semoga teman-teman enjoy dengan tutorial yang diberikan, Semangat Koding :)

#InJavascriptWeTrust

Close

Silahkan Login/Sign Up

😞 Discord eklusif buat member asinkron.com

Jangan khawatir silahkan Daftar GRATIS 😎

*Link discord akan dikirim ke email yang anda gunakan untuk mendaftar.