Cara Upload Gambar & File di CodeIgniter (dengan Contoh)

Unggah File CodeIgniter

Manajemen file sangat penting untuk sebagian besar aplikasi web. Jika Anda mengembangkan sistem manajemen konten, maka Anda harus dapat mengunggah gambar, dokumen word, laporan pdf, dll. Jika Anda bekerja di situs keanggotaan, Anda mungkin perlu menyiapkan orang untuk mengunggah profil mereka gambar-gambar. Kelas File Uploading CodeIgniter memudahkan kita melakukan semua hal di atas.

Dalam tutorial ini, kita akan melihat cara menggunakan perpustakaan unggah file untuk memuat file.

Mengunggah Gambar di CodeIgniter

Pengunggahan file masuk CodeIgniter memiliki dua bagian utama. Bagian depan dan belakang. Frontend ditangani oleh formulir HTML yang menggunakan file tipe input formulir. Di backend, pustaka unggahan file memproses masukan yang dikirimkan dari formulir dan menulisnya ke direktori unggahan.

Mari kita mulai dengan formulir masukan.

Buat direktori baru bernama file di direktori aplikasi/tampilan

Tambahkan file berikut di application/views/files

  • upload_form.php – tampilan ini berisi formulir HTML yang memiliki tipe input file dan mengirimkan file yang dipilih ke server untuk diproses
  • upload_result.php – tampilan ini menampilkan hasil gambar yang diupload termasuk link yang bisa kita klik untuk melihat hasilnya.


Tambahkan kode berikut ke upload_form.php

<!DOCTYPE html>
<html>
<head>
    <title>CodeIgniter Image Upload</title>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
    <div>
        <h3>Select an image from your computer and upload it to the cloud</h3>
        <?php
                if (isset($error)){
                    echo $error;
                }
            ?>
            <form method="post" action="<?=base_url('store-image')?>" enctype="multipart/form-data">
                <input type="file" id="profile_image" name="profile_image" size="33" />
                <input type="submit" value="Upload Image" />
            </form>
    </div>
</body>
</html>

SINI,

  • if (isset($error)){…} memeriksa apakah variabel error telah disetel. Jika hasilnya benar maka kesalahan yang dikembalikan oleh perpustakaan unggahan akan ditampilkan kepada pengguna.
  • jenis file memungkinkan pengguna menjelajahi komputer mereka dan memilih file untuk diunggah.

Tambahkan kode berikut ke upload_result.php

<!DOCTYPE html>
<html>
<head>
    <title>Image Upload Results</title>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
    <div>
        <h3>Congratulations, the image has successfully been uploaded</h3>
        <p>Click here to view the image you just uploaded
            <?=anchor('images/'.$image_metadata['file_name'], 'View My Image!')?>
        </p>

        <p>
            <?php echo anchor('upload-image', 'Go back to Image Upload'); ?>
        </p>
    </div>
</body>
</html>

SINI,

  • menggunakan pembantu jangkar untuk membuat tautan ke file baru yang diunggah di direktori gambar. Nama tersebut diambil dari metadata gambar yang diteruskan ke tampilan ketika file berhasil diunggah.

Sekarang mari kita buat pengontrol yang akan merespons pengunggahan gambar kita

Tambahkan file baru ImageUploadController.php di aplikasi/pengontrol

Tambahkan kode berikut ke ImageUploadController.php

<?php

defined('BASEPATH') OR exit('No direct script access allowed');

class ImageUploadController extends CI_Controller {

    public function __construct() {
        parent::__construct();
        $this->load->helper('url', 'form');
    }

    public function index() {
        $this->load->view('files/upload_form');
    }

    public function store() {
        $config['upload_path'] = './images/';
        $config['allowed_types'] = 'gif|jpg|png';
        $config['max_size'] = 2000;
        $config['max_width'] = 1500;
        $config['max_height'] = 1500;

        $this->load->library('upload', $config);

        if (!$this->upload->do_upload('profile_image')) {
            $error = array('error' => $this->upload->display_errors());

            $this->load->view('files/upload_form', $error);
        } else {
            $data = array('image_metadata' => $this->upload->data());

            $this->load->view('files/upload_result', $data);
        }
    }

}

SINI,

  • class ImageUploadController extends CI_Controller {…} mendefinisikan kelas pengontrol kita dan memperluas pengontrol dasar CI_Controller
  • public function __construct() {…} menginisialisasi metode konstruktor induk dan memuat url dan form helper
  • public function index() {…} mendefinisikan metode indeks yang digunakan untuk menampilkan formulir unggah gambar
  • public function store() {…} mendefinisikan metode yang akan mengunggah gambar dan menyimpannya di server aplikasi web.
    • $config['upload_path'] = './gambar/'; mengatur direktori tempat gambar harus diunggah
    • $config['allowed_types'] = 'gif|jpg|png'; mendefinisikan ekstensi file yang dapat diterima. Ini penting untuk alasan keamanan. Jenis yang diizinkan memastikan hanya gambar yang diunggah dan jenis file lain seperti php tidak dapat diunggah karena berpotensi membahayakan server.
    • $config['ukuran_maks'] = 2000; atur ukuran file maksimum dalam kilobyte. Dalam contoh kami, file maksimum yang dapat diunggah adalah 2,000kb, mendekati 2MB. Jika pengguna mencoba mengunggah file yang lebih besar dari 2,000kb, maka gambar akan gagal diunggah dan perpustakaan akan menampilkan pesan kesalahan.
    • $config['max_width'] = 1500; menetapkan lebar maksimum gambar yang dalam kasus kami adalah 1,500 px. Lebar apa pun yang lebih besar dari itu akan menghasilkan kesalahan
    • $config['max_height'] = 1500; mendefinisikan ketinggian maksimum yang dapat diterima.
    • $ini->muat->perpustakaan('unggah', $config); memuat perpustakaan unggahan dan menginisialisasinya dengan array $config yang kita definisikan di atas.
    • if (!$this->upload->do_upload('profile_image')) {…} mencoba mengunggah gambar yang dikirimkan yang dalam kasus kami diberi nama profile_image
    • $kesalahan = array('kesalahan' => $ini->unggah->display_errors()); menyetel pesan kesalahan jika pengunggahan gagal
    • $ini->muat->lihat('file/upload_form', $error); memuat formulir unggah file dan menampilkan pesan kesalahan yang dikembalikan dari perpustakaan unggahan
    • $data = array('image_metadata' => $ini->unggah->data()); mengatur metadata gambar jika upload berhasil
    • $ini->muat->lihat('file/hasil_unggah', $data); memuat tampilan yang berhasil diunggah dan meneruskan metadata file yang diunggah.

Itu saja untuk pengontrolnya. Sekarang mari buat direktori tempat gambar kita akan diunggah. Buat direktori baru “gambar” di direktori root aplikasi Anda

Terakhir, kami akan mengiklankan dua rute ke file rute.php kami yang akan menampilkan formulir dan menampilkan hasilnya

Open application/config/routes.php
Add the following routes
$route['upload-image'] = 'imageuploadcontroller';
$route['store-image'] = 'imageuploadcontroller/store';

SINI,

  • $route['upload-image'] = 'imageuploadcontroller'; mendefinisikan URL unggah-gambar yang memanggil metode indeks ImageUploadController
  • $route['store-image'] = 'imageuploadcontroller/toko'; mendefinisikan gambar penyimpanan URL yang menerima file pengguna yang dipilih dan mengunggahnya ke server.

Menguji aplikasi

Mari kita mulai server PHP bawaan

Buka terminal/baris perintah dan telusuri ke root aplikasi Anda. Dalam kasus saya, root terletak di drive C:\Sites\ci-app

cd C:\Sites\ci-app

mulai server menggunakan perintah berikut

php -S localhost:3000

Muat URL berikut di peramban web Anda: http://localhost:3000/upload-image

Anda akan dapat melihat hasil berikut ini

Mengunggah Gambar di CodeIgniter

Klik pilih file

Anda seharusnya dapat melihat jendela dialog yang mirip dengan berikut ini

Mengunggah Gambar di CodeIgniter

Pilih gambar yang Anda inginkan lalu klik buka

Mengunggah Gambar di CodeIgniter

Nama file yang dipilih akan muncul pada form upload seperti terlihat pada gambar di atas. Klik pada tombol unggah gambar

Anda akan mendapatkan hasil berikut dengan asumsi semuanya berjalan dengan baik

Mengunggah Gambar di CodeIgniter

Klik Lihat Gambar Saya! Tautan

Anda seharusnya dapat melihat gambar yang Anda unggah. Hasilnya akan mirip dengan berikut ini

Mengunggah Gambar di CodeIgniter

Perhatikan nama gambar yang diunggah ditampilkan di URL. Kami mendapatkan nama gambar dari metadata gambar yang diunggah

Catatan: Proses Upload File tetap sama untuk jenis file lainnya