Cara Mengunggah File ke Back4app

Manajemen file yang efektif sangat penting ketika mengembangkan aplikasi web yang melibatkan unggahan file pengguna.

Back4app menyediakan mekanisme solusi penyimpanan, pengelolaan, dan pengambilan file yang mudah dan efisien berdasarkan Parse.

Dalam panduan ini, Anda akan mempelajari cara menyimpan file Anda menggunakan Back4app dengan mengintegrasikan kemampuan penyimpanan file dengan aplikasi React.

Cara Kerja Penyimpanan File di Back4app

Back4app mengelola pengunggahan dan penyimpanan file menggunakan kelas Parse.File.

Kelas Parse.File memungkinkan Anda untuk menyimpan file yang terlalu besar untuk disimpan di Parse.Object seperti gambar, video, dokumen, dan data biner lainnya.

Untuk mengunggah file ke penyimpanan awan Back4app, Anda harus membuat instance Parse.File dengan data file dan menyimpan instance tersebut. Instance baru Parse.File memerlukan nama file, file, dan konten/tipe file (opsional).

Penting untuk memastikan bahwa nama file berisi ekstensi file untuk membantu Parse menanganinya.

Namun, nama Anda tidak harus unik karena setiap unggahan akan mendapatkan pengenal unik, sehingga mengunggah beberapa file bernama example.jpeg tidak akan menyebabkan tabrakan penamaan.

Ketika Anda mengunggah file, Parse.File mendeteksi jenisnya secara otomatis berdasarkan ekstensi file dari nama file. Namun, Anda dapat mengganti deteksi otomatis dengan menentukan parameter Tipe-Konten.

Untuk mengakses file yang Anda unggah di Back4app, Anda harus mengaitkannya dengan objek data setelah Anda mengunggahnya.

Kemudian, Anda dapat meminta objek data yang terkait untuk mengambil file. File yang diunggah namun tidak terkait dengan objek data akan menjadi “file yatim piatu”, dan Anda tidak dapat mengaksesnya.

Sekarang setelah Anda memahami cara kerja penyimpanan file di Back4app, Anda akan membuat aplikasi galeri dengan React untuk mendemonstrasikan bagaimana Anda dapat menyimpan dan mengambil file dari Back4app.

Membuat Aplikasi React

Untuk mengimplementasikan kemampuan penyimpanan file Back4app dengan React, pertama-tama Anda harus membuat aplikasi React untuk diintegrasikan dengan Back4app. Untuk melakukan ini, Anda menggunakan Vite, alat front-end untuk membangun aplikasi web dengan cepat.

Anda dapat membuat aplikasi React dengan Vite dengan menjalankan perintah berikut di terminal Anda:

npm init vite

Setelah Anda menjalankan perintah di atas, Vite akan meminta Anda untuk memberikan nama untuk proyek sebelum memberikan daftar pilihan untuk memilih framework yang ingin Anda gunakan untuk membangun aplikasi web Anda.

Vite CLI

Seperti yang terlihat pada gambar di atas, nama proyeknya adalah gallery-app. Setelah memilih opsi React, Anda akan memilih bahasa pemrograman untuk mengembangkan aplikasi React.

Vite CLI

Untuk proyek ini, pilih opsi JavaScript. Sekarang, proyek Anda sudah siap.

Selanjutnya, Anda perlu menginstal beberapa dependensi yang diperlukan dalam proyek Anda. Untuk menginstal dependensi, buka direktori proyek Anda dan jalankan perintah di bawah ini:

# Switch to the project directory
cd gallery-app

# Install dependencies
npm install

Perintah ini akan menginstal semua dependensi yang diperlukan dalam proyek Anda, dan Anda sekarang dapat mulai membangun aplikasi pada IDE Anda.

Membangun Aplikasi React

Buka proyek React Anda dengan IDE Anda dan buat sebuah folder komponen di dalam direktori src. Di dalam folder komponen, tambahkan komponen FileUpload.

Pada komponen FileUpload, tambahkan baris kode berikut:

//FileUpload.jsx
import React from "react";

function FileUpload({updateData}) {
  const [file, setFile] = React.useState("");

  const handleFIleUpload = (event) => {
    setFile(event.target.files[0]);
  };

  return (
    <form>
      <label htmlFor="file-upload" className="custom-file-upload">
        Choose File
      </label>
      <input
        id="file-upload"
        type="file"
        style={{ display: "none" }}
        onChange={handleFileUpload}
      />
    </form>
  );
}

export default FileUpload;

Blok kode di atas mewakili komponen FileUpload yang memungkinkan Anda memilih file lokal. Komponen ini berisi status file. Komponen ini menggunakan elemen masukan jenis file untuk mengakses dan memilih file lokal dari perangkat Anda.

Dalam blok kode, terdapat fungsi handleFileSelect. Fungsi ini menggunakan metode setFile untuk memperbarui status file dengan file pertama yang dipilih oleh pengguna.

Sekarang, modifikasi kode di komponen aplikasi Anda dengan menambahkan baris kode di blok kode di bawah ini:

//App.jsx
import FileUpload from "./components/FileUpload";

function App() {
  return (
    <main className="container">
      <h1 className="title">My Gallery</h1>
      <>
        <FileUpload />
      </>
    </main>
  );
}

export default App;

Blok kode di atas mengimpor komponen FileUpload dan merendernya di dalam elemen utama. Komponen ini juga berisi elemen h1 yang merender teks “Galeri Saya.”

Anda telah menyiapkan komponen Anda. Selanjutnya, Anda perlu memberi gaya pada aplikasi. Untuk melakukannya, ganti kode di file index.css Anda dan tambahkan kode ini sebagai gantinya:

/*index.css*/
@import url('<https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,100..900;1,100..900&display=swap>');

*{
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

body{
  background-color: #F2F2F2;
  color: #333333;
  font-family: "Montserrat", sans-serif;
}

.container{
  inline-size: 60%;
  margin: auto;
}

.title{
  text-align: center;
  margin-block-start: 1rem;
  margin-block-end: 6rem;
}

.custom-file-upload {
  display: inline-block;
  font-weight: 500;
  padding: 6px 12px;
  cursor: pointer;
  background: #FFFFFF;
  border: none;
  border-radius: 4px;
}

.custom-file-upload:hover {
  background-color: #333333;
  color: #FFFFFF;
}

Menyiapkan Aplikasi Back4app

Untuk menyiapkan aplikasi Back4app, Anda harus masuk ke akun Back4app Anda. Jika Anda tidak memiliki akun, Anda dapat membuatnya secara gratis.

Setelah masuk, Anda akan menggunakan agen AI Back4app untuk membuat aplikasi baru. Agen AI adalah layanan Back4app yang memungkinkan Anda untuk berinteraksi dan mengelola aplikasi Back4app Anda menggunakan petunjuk.

Anda dapat mengaksesnya dengan mengeklik tautan agen AI di bilah navigasi dasbor akun Anda, seperti yang ditunjukkan pada gambar di bawah ini.

Halaman aplikasi Back4app

Untuk membuat aplikasi Back4app dengan agen AI, tulis pesan yang meminta AI untuk membuat aplikasi, seperti perintah di bawah ini:

Create a new Back4app application named gallery-app

Perintah di atas akan membuat AI membuat aplikasi Back4app baru. Setelah AI membuat aplikasi, ia akan mengirimkan respons yang mengonfirmasi pembuatannya beserta kredensial aplikasi.

Sepertinya begitu:

Tanggapan agen AI

Sekarang, aplikasi Back4app Anda sudah siap. Salin ID Aplikasi dan kredensial kunci JavaScript karena Anda akan membutuhkannya nanti.

Untuk mengakses aplikasi, kunjungi dasbor aplikasi Anda dengan mengeklik tautan “Aplikasi Saya” pada bilah navigasi.

Sekarang Anda telah berhasil membuat backend Back4app menggunakan agen AI, selanjutnya, Anda perlu menghubungkan aplikasi React ke backend Anda.

Menghubungkan Aplikasi React Anda ke Back4app

Untuk menghubungkan aplikasi React Anda ke Back4app, Anda perlu menginstal Parse SDK dengan menjalankan perintah di bawah ini:

npm install parse

Selanjutnya, impor versi kecil dari parse ke dalam komponen aplikasi Anda dan inisialisasi dengan kredensial yang telah Anda simpan sebelumnya di artikel ini dengan menambahkan blok kode di bawah ini ke dalam komponen aplikasi Anda:

//App.jsx

import Parse from 'parse/dist/parse.min.js';

Parse.initialize('YOUR_APP_ID', 'YOUR_JAVASCRIPT_KEY');
Parse.serverURL = "<https://parseapi.back4app.com/>";

Ganti 'YOUR_APPLICATION_ID' dan 'YOUR_CLIENT_KEY' dengan kredensial yang didapatkan dari Back4App anda. Pastikan Anda menyimpan kredensial dengan aman, misalnya, menggunakan variabel env.

Mengunggah File ke Back4app

Untuk menyimpan file di penyimpanan awan Back4app, pertama-tama Anda perlu membuat instance Parse.File. Selanjutnya, Anda perlu menyimpan instance Parse.File dengan memanggil metode simpan di atasnya.

Kemudian, Anda perlu mengaitkan file yang disimpan dengan objek data, sehingga Anda dapat mengambil file tersebut.

Untuk mencapai hal ini, buat subkelas baru dari Parse.Object, tambahkan file ke properti subkelas baru Anda, dan simpan ke Back4app.

Untuk mengimplementasikan logika di atas, modifikasi fungsi handleFileUpload di komponen FileUpload agar sesuai dengan blok kode di bawah ini:

//FileUpload.jsx
const handleFileUpload = async (event) => {
    event.preventDefault();
    try {
      let name = "image.jpg";
      const File = new Parse.File(name, event.target.files[0]);
      const photo = await File.save();

      const Gallery = Parse.Object.extend("Gallery");
      const gallery = new Gallery();
      gallery.set("photo", photo);
      await gallery.save();

      console.log("File saved:", File);
      updateData();
    } catch (error) {
      console.error("Error saving file:", error);
    }
  };

Fungsi handleFileUpload memegang logika yang bertanggung jawab untuk mengunggah foto dari perangkat lokal Anda ke server. Fungsi ini membuat instance Parse.File baru.

Metode Parse.File mengambil dua argumen: variabel nama yang mewakili nama foto dan file pertama yang dipilih pengguna.

Fungsi ini menyimpan file ke server dengan memanggil metode simpan pada instance File. Fungsi ini kemudian membuat objek Parse baru untuk kelas Gallery.

Dengan menggunakan metode set, fungsi ini menetapkan file foto sebagai nilai properti foto dari objek galeri. Terakhir, fungsi ini menyimpan objek galeri ke server dengan fungsi gallery.save().

Mengambil File Dari Back4app

Untuk mengambil file dari penyimpanan awan Back4app, Anda perlu mengambil Parse Object yang menyimpan file tersebut. Anda bisa melakukan ini dengan membuat kueri baru yang menargetkan kelas dengan Parse Object.

Untuk mengimplementasikan logika di atas, buat komponen Feed dan tambahkan blok kode di bawah ini:

//Feed.jsx
import React from "react";
import Parse from "parse/dist/parse.min.js";

function Feed({data}) {
  const [gallery, setGallery] = React.useState([]);

  React.useEffect(() => {
    const fetchFiles = async () => {
      let query = new Parse.Query("Gallery");
      const results = await query.find();
      setGallery(results);
    };
    fetchFiles();
  }, [data]);

  return (
    <div className="photos">
      {gallery.map((item) => (
        <img src={item.get("photo").url()} key={item.id} />
      ))}
    </div>
  );
}

export default Feed;

Blok kode di atas membuat status galeri dan memberikannya sebuah larik kosong. Ini menggunakan hook useEffect untuk menjalankan fungsi fetchFiles.

Hook useEffect akan menjalankan fungsi setelah render pertama komponen dan setiap kali prop data berubah.

Fungsi fetchFiles membuat kueri baru yang menargetkan kelas “Galeri” dengan metode Parse.Query.

Memanggil metode find pada kueri akan mengembalikan sebuah larik yang berisi hasil kueri. Terakhir, fungsi fetchFiles menetapkan larik hasil ke status galeri menggunakan fungsi setGallery.

Terakhir, dengan metode map, Anda merender elemen img untuk setiap item dalam larik galeri. Kode ini menetapkan nilai atribut src elemen img ke URL properti foto setiap item.

Beri gaya pada elemen div dengan foto kelas dengan menambahkan blok kode di bawah ini ke file index.css Anda:

/*index.css*/
.photos{
  display: grid;
  grid-template-columns: repeat(3,1fr);
  gap: 2rem;
  margin-block-start: 4rem;
}

Untuk menampilkan komponen Feed di aplikasi Anda, pastikan Anda mengimpor dan memanggil komponen Feed di komponen App Anda. Setelah melakukan semua modifikasi, komponen Aplikasi Anda akan terlihat seperti ini:

//App.jsx
import React from "react";
import Parse from "parse/dist/parse.min.js";
import FileUpload from "./components/FileUpload";
import Feed from "./components/Feed";

Parse.initialize(PARSE_APP_ID, PARSE_JAVASCRIPT_KEY);
Parse.serverURL = "<https://parseapi.back4app.com/>";

function App() {
  const [data, setData] = React.useState(1);

  const updateData = (prevState) => {
    setData(() => prevState + 1);
  };

  return (
    <main className="container">
      <h1 className="title">My Gallery</h1>

      <>
        <FileUpload updateData={updateData} />
        <Feed data={data} />
      </>
    </main>
  );
}

export default App;

Menguji Aplikasi Anda

Mulai aplikasi Anda dengan menjalankan blok kode di bawah ini dalam direktori aplikasi Anda:

npm run dev

Menjalankan perintah di atas akan memulai aplikasi Anda di http://localhost:5173/.

Buka http://localhost:5173/, dan Anda akan melihat halaman yang mirip dengan gambar di bawah ini:

Beranda Aplikasi Galeri

Klik tombol “Pilih File” dan pilih gambar dari perangkat lokal Anda.

Unggah Gambar ke Back4app

Anda dapat memverifikasi apakah gambar berhasil diunggah dengan mengunjungi dasbor aplikasi Back4app Anda.

Setelah berhasil diunggah, Back4app akan menambahkan baris ke tabel kelas "Galeri", seperti yang ditunjukkan pada gambar di bawah ini.

Dasbor Back4app

Atau, Anda dapat memverifikasi dengan melihat gambar yang ditampilkan pada layar Anda, seperti yang ditunjukkan pada gambar di bawah ini.

Beranda Aplikasi Galeri

Menerapkan Aplikasi Anda di Wadah Back4app

Di bagian ini, Anda akan men-deploy aplikasi Anda di Back4app Containers. Untuk melakukan ini, Anda harus terlebih dahulu mendokumentasi aplikasi Anda dan mendorongnya ke repositori GitHub.

Anda dapat menjalankan proses deployment secara manual menggunakan Back4app UI atau secara otomatis menggunakan Back4app AI agent. Untuk tutorial ini, Anda akan menjalankan proses deployment menggunakan agen AI.

Membuat berkas Docker

Buat berkas Docker di direktori root aplikasi Anda dan tambahkan blok kode ke dalamnya:

FROM node:18
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 5173
CMD ["npm", "run", "dev"]

Selanjutnya, buat berkas .dockerignore di direktori root aplikasi Anda dan tambahkan blok kode di bawah ini ke dalamnya:

node_modules

Menambahkan modul simpul ke berkas .dockerignore akan memastikan bahwa Docker mengecualikan folder node_modules dari konteks saat membangun citra.

Perhatikan bahwa Anda membuat aplikasi React dengan Vite, sehingga Anda harus mengonfigurasi Vite untuk mendukung Docker. Untuk mengonfigurasi Vite, ganti kode di vite.config.js dengan blok kode di bawah ini:

import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'

// <https://vitejs.dev/config/>
export default defineConfig({
  plugins: [react()],
  server: {
    host: true,
    strictPort: true,
    port: 5173,
   },
})

Blok kode ini memastikan bahwa Vite hanya memulai server jika port yang ditentukan tersedia, dan menentukan nomor port yang akan didengarkan oleh server pengembangan pada port 5173.

Selanjutnya, bangun citra docker aplikasi untuk memastikan semuanya berfungsi dengan menjalankan perintah di bawah ini di terminal Anda:

docker build -t gallery-app .

Di sini, Anda telah berhasil mendokumentasi aplikasi Anda, dan selanjutnya Anda akan menerapkannya.

Menerapkan Aplikasi Anda

Sebelum menerapkan aplikasi Anda, integrasikan akun GitHub Anda dengan aplikasi Github Back4app dan berikan akses ke repositori yang ingin Anda gunakan.

Arahkan ke agen AI dan masukkan perintah di bawah ini untuk menerapkan aplikasi Anda:

Deploy my repository <<repository-url>> on Back4app containers

Ganti repository-url dengan URL repositori GitHub aplikasi Anda. Perintah di atas akan memulai proses penyebaran.

Tanggapan agen AI

Seperti yang terlihat pada gambar di atas, agen AI memulai proses penerapan. Sementara itu, status penerapannya adalah “menerapkan”.

Setelah beberapa menit, Anda dapat bertanya kepada agen AI tentang status penerapan aplikasi. Jika aplikasi berhasil diterapkan, status penerapan akan berubah menjadi siap.

Sepertinya begitu:

Tanggapan agen AI

Pada gambar di atas, Anda dapat melihat bahwa status deployment berubah dari “deploying” menjadi “ready,” yang menunjukkan bahwa aplikasi berhasil diterapkan dan sekarang sudah aktif.

Anda dapat mengakses aplikasi di browser Anda menggunakan URL aplikasi yang disediakan.

Kesimpulan

Pada artikel ini, Anda telah mempelajari cara mengunggah dan mengambil file menggunakan Back4app dengan membuat aplikasi galeri sederhana dengan React.

Selain itu, Anda juga telah mempelajari cara menggunakan aplikasi React di Back4app menggunakan Back4app AI agent.

Dengan Back4app, Anda bisa menyimpan dan mengelola file secara efisien dan aman. Kode yang digunakan dalam tutorial ini tersedia di repositori GitHub ini.


Leave a reply

Your email address will not be published.