Jika Anda berada di server yang sama dan upload file maka Anda dapat dengan mudah mengunggahnya baik secara langsung menggunakan PHP atau AJAX tetapi jika Anda ingin mengunggahnya ke server lain maka Anda harus menggunakan cURL.
Apalagi Upload file (gambar, dokumen, dll.) pada halaman web adalah bagian penting dari sebagian besar situs web.
Oleh karena itu, pada tutorial kali ini saya akan menjelaskan cara upload file menggunakan cURL di PHP. Mari ikuti langkah-langkah berikut ini.
1. Membuat API ke Upload File
Pertama kita buat folder root project dan pada folder itu buat file lagi dengan nama api.php. Jika terdapat $_FILES[‘file’][‘nama’] adalah isset() maka unggah file ke folder unggah.
Tetapkan nilai $status dan $msg berdasarkan status pengunggahan. Baca data tambahan num1 yang dilewatkan menggunakan $_POST.
Kembalikan Array $response dalam format JSON.
<?php $status = 0; $msg = ""; if(isset($_FILES['file']['name'])){ // file name $filename = $_FILES['file']['name']; // Location $location = 'upload/'.$filename; // file extension $file_extension = pathinfo($location, PATHINFO_EXTENSION); $file_extension = strtolower($file_extension); // Valid extensions $valid_ext = array("pdf","doc","docx","jpg","png","jpeg"); $status = 0; if(in_array($file_extension,$valid_ext)){ // Upload file if(move_uploaded_file($_FILES['file']['tmp_name'],$location)){ $status = 1; $msg = "Upload successfully"; } }else{ $status = 0; $msg = "Invalid file extension"; } } $response = array( 'status' => $status, 'msg' => $msg, 'num1' => $_POST['num1'] ); echo json_encode($response); die;
Baca Juga
2. Upload File dengan cURL
Selanjutnya kita buat file index.php pada folder project. Pada file tersebut buat element <form> dan tambahkan element file dan submit button.
Jika tombol kirim adalah POST maka unggah berkas menggunakan cURL.
Buat objek CURLFile di mana masukkan $_FILES[‘file’][‘tmp_name’], $_FILES[‘file’][‘type’], dan $_FILES[‘file’][‘name’] sebagai parameter.
Simpan $cfile dalam $postRequest[‘file’] Larik. Di sini, juga menyimpan nilai dalam $postRequest[‘num1’] untuk tujuan contoh.
Menguraikan respons cURL untuk membaca nilai.
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>How to upload file using cURL in PHP</title> </head> <body> <?php if(isset($_POST['submit'])){ if(isset($_FILES['file']['name'])){ // Create a CURLFile object $cfile = curl_file_create($_FILES['file']['tmp_name'],$_FILES['file']['type'],$_FILES['file']['name']); $postRequest = array( 'file' => $cfile, 'num1' => 54 ); $cURL = curl_init('http://localhost/apis/api.php'); curl_setopt($cURL, CURLOPT_POSTFIELDS, $postRequest); curl_setopt($cURL, CURLOPT_RETURNTRANSFER, true); if(curl_exec($cURL) === false){ echo 'Curl error: ' . curl_error($cURL); }else{ $curlResponse = curl_exec($cURL); $jsonArrayResponse = json_decode($curlResponse); echo "<pre>"; print_r($jsonArrayResponse); echo "</pre>"; } curl_close($cURL); } } ?> <form method="post" action="" enctype="multipart/form-data"> <input type="file" name="file"> <br> <input type="submit" name="submit" value="Upload file"> </form> </body> </html>
Dengan menggunakan skrip di atas, Anda dapat mengunggah satu berkas menggunakan cURL dan Anda dapat melakukan POST parameter tambahan ketika mengirim berkas untuk diunggah.
Jika ada pertanyaan bisa langsung tulis di kolom komentar di bawah ini.