cara upload file menggunakan curl di php

Cara Upload File Menggunakan cURL di PHP

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;

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.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top