Anda di halaman 1dari 10

PRAKTIKUM 5 – UPLOAD FILE API

MATA KULIAH INTEGRASI DATA

JUNIATI JOVITA INDUS


42522077

PROGRAM STUDI D4 TEKNIK KOMPUTER DAN JARINGAN


JURUSAN TEKNIK INFORMATIKA DAN KOMPUTER
POLITEKNIK NEGERI UJUNG PANDANG
2024
PRAKTIKUM V
Upload File API

1. Tujuan
Setelah menyelesaikan modul ini, anda diharapkan dapat :
1. Mahasiswa mampu membuat API dengan kemampuan Upload File
2. Mampu melakukan encode dan decode file dengan base64

2. Dasar Teori
Dalam mengintegrasikan data dengan API, backend developer perlu
mengakomodasi tiap platform yang berbeda agar memiliki kemampuan / fitur
yang sama, termasuk terkait Upload File dan gambar.

Umumnya, upload gambar pada web aplikasi bisa dilakukan dengan method
move_uploaded_file, namun demikian pada platform yang lain seperti aplikasi
mobile, form untuk upload file ini tidak tersedia, sehingga memerlukan metode
lain dalam upload gambar.

Salah satu cara yang bisa di tempuh agar semua platform bisa mengupload file
ialah dengan menyiapkan upload tipe base64. Base64 sendiri adalah metode
perubahan data menjadi string.

3. Daftar Alat dan Bahan


1. Personal Computer (Min. 4Core Processor, 8GB RAM)
2. Visual Studio Code, MySQL
4. Langkah Kerja
4.1 Membuat form Input gambar Base64
<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// Menyiapkan data untuk diunggah
$postData = [
'nim' => $_POST['nim'],
'nama_mhs' => $_POST['nama_mhs'],
'alamat' => $_POST['alamat']
];

// Jika ada unggahan gambar


if (isset($_FILES['image']) && $_FILES['image']['error'] == 0) {
$file_tmp = $_FILES['image']['tmp_name'];
$data = file_get_contents($file_tmp);
$base64 = base64_encode($data);
$ext = pathinfo($_FILES['image']['name'], PATHINFO_EXTENSION);

// Menambahkan data gambar ke dalam data yang akan diunggah


$postData['fileExtension'] = $ext;
$postData['fileUpload'] = $base64;
}

// Mengirim data menggunakan cURL


$curl = curl_init("http://localhost/api/insert_img.php");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $postData);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);

if ($err) {
echo "cURL Error #: " . $err;
} else {
echo $response;
}
} else {
echo "Silakan pilih file untuk diunggah.";
}
?>

<form action="" method="POST" enctype="multipart/form-data">


<p>
<input type="text" name="nim" placeholder="NIM"><br/>
<input type="text" name="nama_mhs" placeholder="Nama Mahasiswa"><br/>
<input type="text" name="alamat" placeholder="Alamat"><br/>
<input type="file" name="image"><br/>
<input type="submit" value="Upload">
</p>
</form>
Terlihat dari form diatas, data gambar diubah menjadi string dengan perintah
base64_encode sebelum dikirim pada API.
4.2 Membuat file API
<?php
// Set header untuk tipe konten JSON
header("Content-Type: application/json");

// Konfigurasi koneksi database


$servername = "localhost";
$username = "root";
$password = "123456";
$dbname = "kemahasiswaan";

// Membuat koneksi ke database


$conn = new mysqli($servername, $username, $password, $dbname);

// Memeriksa koneksi database


if ($conn->connect_error) {
die("Gagal terkoneksi: " . $conn->connect_error);
}

// Menangkap metode request


$smethod = $_SERVER['REQUEST_METHOD'];
$result = array();

// Menggunakan metode POST untuk memproses pengiriman data


if ($smethod == 'POST') {
// Menangkap input
$nim = $_POST['nim'];
$nama_mhs = $_POST['nama_mhs'];
$alamat = $_POST['alamat'];

// Memeriksa apakah ada file yang diunggah


if (!empty($_POST['fileUpload'])) {
// Jika ada file yang diunggah, simpan gambar ke folder foto
$image = base64_decode($_POST['fileUpload']);
$ext = $_POST['fileExtension'];
$imagename = $nim . '.' . $ext;
file_put_contents('foto/' . $imagename, $image);
} else {
// Jika tidak ada file yang diunggah, tetapkan nama gambar sebagai nim
$imagename = $nim;
}

// Menyisipkan data ke database


$sql = "INSERT INTO mahasiswa (nim, nama_mhs, alamat, foto)
VALUES ('$nim', '$nama_mhs', '$alamat', '$imagename')";

// Menjalankan query SQL


if ($conn->query($sql) === TRUE) {
$result['status']['code'] = 200;
$result['status']['description'] = "1 data inserted";
$result['result'] = array(
"nim" => $nim,
"nama_mhs" => $nama_mhs,
"alamat" => $alamat,
"foto" => $imagename
);
} else {
$result['status']['code'] = 500;
$result['status']['description'] = "Error saat menyisipkan data: " . $conn->error;
}
} else {
// Menampilkan pesan error jika metode request tidak valid
$result['status']['code'] = 400;
$result['status']['description'] = "Metode permintaan tidak valid";
}

// Menutup koneksi database


$conn->close();

// Mengembalikan hasil dalam format JSON


echo json_encode($result);
?>
Pada kode API diatas, web server akan menerima data gambar bentuk string
base64, string tersebut kemudian di convert menjadi gambar biasa dengan
perintah base64_decode. Dan jika web server tidak menerima data gambar maka data
tetap berbentuk string tapi tanpa ekstensi bertambah ke database.
4.3 Hasil
Jika ingin mengirim foto

Hasil pada database

Hasil pada folder foto


Jika tidak ingin mengirim foto

Hasil pada database

Hasil pada folder foto


5. Kesimpulan
Dari praktikum di atas, kita dapat menyimpulkan beberapa hal:
1. Koneksi Database: Penting untuk menjaga koneksi dengan database agar dapat
berinteraksi dengan data secara efisien. Koneksi tersebut haruslah terjamin agar tidak
terjadi kesalahan atau kegagalan dalam proses pengiriman dan penyimpanan data.

2. Validasi Input: Perlu dilakukan validasi terhadap input yang diterima dari pengguna
untuk memastikan data yang masuk sesuai dengan format yang diinginkan dan aman
dari serangan seperti SQL injection atau XSS (Cross-Site Scripting).

3. Penanganan Gambar: Jika aplikasi memungkinkan pengguna untuk mengunggah


gambar, penting untuk memiliki logika yang tepat untuk menyimpan gambar tersebut.
Gambar harus disimpan dengan nama yang unik dan ekstensi yang sesuai, serta
memperhatikan keamanan untuk mencegah ancaman seperti upload file berbahaya.

4. Penyimpanan Data: Data yang diterima dari pengguna harus disimpan dengan benar
ke dalam database. Penting untuk memeriksa keberhasilan penyimpanan data dan
memberikan tanggapan yang sesuai kepada pengguna jika terjadi kesalahan.

5. Respons: Setelah proses selesai, tanggapan yang jelas dan terstruktur perlu diberikan
kepada pengguna, baik itu berupa informasi sukses atau pesan kesalahan jika terjadi
masalah.

Dengan menerapkan praktik-praktik seperti ini, aplikasi dapat berjalan dengan lebih
lancar dan aman, serta memberikan pengalaman yang lebih baik kepada pengguna.

Anda mungkin juga menyukai