Cara Mengunggah Gambar & File di CodePemantik Api (dengan Contoh)

⚡ Ringkasan Cerdas

CodeIgniter File Upload menggunakan pustaka Upload bawaan untuk memindahkan gambar dan dokumen dari formulir HTML ke direktori server. Contoh ini membangun formulir unggah, pengontrol yang memvalidasi jenis dan ukuran, serta halaman hasil yang mengkonfirmasi unggahan.

  • 📁 Kelas Inti: Pustaka Upload menangani pekerjaan backend untuk memvalidasi file yang dikirimkan dan menuliskannya ke direktori unggahan yang dipilih.
  • ️ Dua Bagian: Pengunggahan memerlukan formulir HTML frontend dengan tipe input file ditambah controller backend yang memproses pengiriman.
  • 🔒 Jenis Daftar Putih: Konfigurasi allowed_types hanya menerima ekstensi yang terdaftar seperti gif, jpg, dan png, memblokir file berisiko seperti skrip PHP.
  • 📏 Batasan Ukuran: Kunci max_size, max_width, dan max_height akan menolak file yang melebihi batas dan menampilkan pesan kesalahan yang jelas.
  • 📝 Pengkodean Formulir: Formulir harus mengatur enctype ke multipart/form-data, jika tidak, file yang dipilih tidak akan pernah sampai ke server.
  • 📄 Metadata Hasil: Jika berhasil, upload->data() mengembalikan detail file yang digunakan untuk membuat tautan ke gambar yang baru saja disimpan.
  • 🤖 Bantuan AI: Alat AI dapat menghasilkan formulir unggahan, aturan validasi pengontrol, dan penanganan kesalahan, kemudian meninjaunya untuk mencari celah keamanan.

CodeUnggahan File Igniter

CodeUnggahan File Igniter

Manajemen file sangat penting untuk sebagian besar aplikasi web. Jika Anda seorang pengembang...ping Jika Anda menggunakan sistem manajemen konten, Anda perlu dapat mengunggah gambar, dokumen Word, laporan PDF, dan lainnya. Jika Anda mengerjakan situs keanggotaan, Anda mungkin perlu menyediakan fitur bagi orang-orang untuk mengunggah gambar profil mereka. CodeKelas Pengunggahan File Igniter memudahkan kita untuk melakukan semua hal di atas.

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

Mengunggah Gambar di CodeAlat penyala

Pengunggahan file masuk CodeAlat penyala Terdiri dari dua bagian utama: frontend dan backend. Frontend ditangani oleh formulir HTML yang menggunakan tipe input formulir `file`. Di backend, pustaka unggahan file memproses input yang dikirimkan dari formulir dan menuliskannya ke direktori unggahan.

Mari kita mulai dengan formulir input.

Buat direktori baru bernama files di dalam direktori application/views.

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 unggahan gambar, termasuk tautan yang dapat 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(0)?>" 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 diatur. Jika hasilnya benar, maka error yang dikembalikan oleh library unggahan akan ditampilkan kepada pengguna.
  • Opsi "type file" memungkinkan pengguna untuk menelusuri 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 helper anchor untuk membuat tautan ke file yang baru diunggah di direktori gambar. Nama file diambil dari metadata gambar yang diteruskan ke tampilan saat file berhasil diunggah.

Sekarang mari kita buat controller 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 diperbolehkan. Ini penting untuk alasan keamanan. Jenis yang diperbolehkan memastikan bahwa hanya gambar yang diunggah dan jenis file lain seperti PHP tidak dapat diunggah, karena berpotensi membahayakan server.
    • $config['max_size'] = 2000; mengatur ukuran file maksimum dalam kilobyte. Dalam contoh kita, file maksimum yang dapat diunggah adalah 2,000kb, mendekati 2MB. Jika pengguna mencoba mengunggah file yang lebih besar dari 2,000kb, maka pengunggahan gambar akan gagal dan pustaka akan menampilkan pesan kesalahan.
    • $config['max_width'] = 1500; mengatur lebar maksimum gambar, yang dalam kasus kita 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.
    • jika (!$this->upload->do_upload('profile_image')) {…} mencoba mengunggah gambar yang dikirimkan, yang dalam kasus kita bernama 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.

Demikianlah bagian controller. Sekarang mari kita buat direktori tempat gambar kita akan diunggah. Buat direktori baru bernama “images” di direktori root aplikasi Anda.

Terakhir, kita akan menambahkan dua rute ke file routes.php kita yang akan menampilkan formulir dan menampilkan hasilnya.

Buka application/config/routes.php dan tambahkan rute-rute berikut.

$route['upload-image'] = 'imageuploadcontroller';
$route['store-image'] = 'imageuploadcontroller/store';

SINI,

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

Cara Memperbaiki Umum CodeKesalahan Unggahan File Igniter

Sebagian besar kegagalan unggahan akan menampilkan pesan yang jelas dari pustaka Unggahan. Daftar di bawah ini memetakan kesalahan umum beserta solusinya.

  • Jenis file yang Anda coba unggah tidak diizinkan: Tambahkan ekstensi yang hilang ke konfigurasi allowed_types, misalnya 'gif|jpg|png|pdf'.
  • Ukuran file yang Anda coba unggah melebihi ukuran yang diizinkan: Tingkatkan max_size, dan pastikan upload_max_filesize dan post_max_size di php.ini cukup besar.
  • Jalur unggahan tampaknya tidak valid: Buat direktori upload_path dan pastikan server web memiliki izin tulis pada direktori tersebut.
  • Anda belum memilih file untuk diunggah: Periksa apakah nama input sesuai dengan argumen do_upload() dan apakah formulir menggunakan enctype multipart/form-data.

Menguji aplikasi

Mari kita mulai server PHP bawaan.

Buka terminal atau baris perintah dan arahkan ke direktori utama aplikasi Anda. Dalam kasus saya, direktori utamanya terletak di drive C:\Sites\ci-app

cd C:\Sites\ci-app

Mulai server menggunakan perintah berikut

php -S localhost:3000

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

Anda akan dapat melihat hasil berikut ini.

Mengunggah Gambar di CodeAlat penyala

Klik pilih file

Anda seharusnya dapat melihat jendela dialog yang mirip dengan berikut ini

Mengunggah Gambar di CodeAlat penyala

Pilih gambar yang Anda inginkan, lalu klik buka.

Mengunggah Gambar di CodeAlat penyala

Nama file yang dipilih akan muncul di formulir unggah seperti yang ditunjukkan pada gambar di atas. Klik tombol Unggah Gambar.

Anda akan mendapatkan hasil berikut, dengan asumsi semuanya berjalan lancar.

Mengunggah Gambar di CodeAlat penyala

Klik tautan Lihat Gambar Saya!

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

Mengunggah Gambar di CodeAlat penyala

Perhatikan bahwa nama gambar yang diunggah ditampilkan di URLKami mendapatkan nama gambar dari metadata gambar yang diunggah.

Catatan: Proses pengunggahan file tetap sama untuk jenis file lainnya.

Pertanyaan Umum Demo Slot

The CodePustaka Upload Igniter 3 menangani satu file per panggilan do_upload(), jadi Anda melakukan perulangan pada $_FILES dan memanggilnya untuk setiap item. CodeIgniter 4 mendukung pengunggahan banyak file secara langsung melalui metode getFileMultiple().

Nomor CodeIgniter 4 menggantikan pustaka Upload dengan API Request file. Anda memanggil `$this->request->getFile('field')`, memvalidasinya, lalu menggunakan `move()` untuk menyimpan file, alih-alih memuat pustaka unggahan terpisah.

Atur `$config['encrypt_name'] = TRUE` untuk memberi setiap file nama acak, atau atur `$config['file_name']` ke nilai yang Anda pilih. Ini mencegah penimpaan file yang sudah ada yang memiliki nama asli yang sama.

Ya. AI dapat menghasilkan daftar putih allowed_types, batasan ukuran, dan penanganan kesalahan, serta menyarankan pemeriksaan tambahan seperti memverifikasi tipe MIME yang sebenarnya. Selalu uji aturan yang dihasilkan terhadap file sungguhan sebelum diterapkan.

Ya. Tempelkan pesan kesalahan dan controller Anda, dan AI dapat menunjukkan masalah seperti formulir multipart yang hilang, upload_path yang tidak dapat ditulis, atau ekstensi yang hilang dari allowed_types, lalu menyarankan perbaikannya.

Ringkaslah postingan ini dengan: