PHP: effettuare l'upload di file sulle API REST

In questo articolo vedremo come effettuare l'upload di un file verso una API REST con PHP.

La soluzione è la seguente:


function upload_file_to_rest_api($file_path, $url, $auth_token) {
    $file_name_with_full_path = realpath($file_path);
    $cfile = curl_file_create($file_name_with_full_path);
    $post = ['file_contents'=> $cfile];
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HTTPHEADER, ["Authorization: Bearer $auth_token"]);
    curl_setopt($ch, CURLOPT_POST,1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $result = curl_exec($ch);
    curl_close ($ch);
    return $result;
}

La funzione upload_file_to_rest_api() accetta tre parametri: $file_path (il percorso completo del file da caricare), $url (l'URL dell'API REST) e $auth_token (il token di autenticazione per accedere all'API REST).

La variabile $file_name_with_full_path viene inizializzata con il percorso reale completo del file utilizzando la funzione realpath($file_path). Questo è necessario per ottenere il percorso completo del file sul sistema.

La funzione curl_file_create($file_name_with_full_path) viene utilizzata per creare un oggetto CURL File ($cfile) utilizzando il percorso completo del file.

La variabile $post viene inizializzata come un array associativo con una chiave 'file_contents' e il valore $cfile. Questo array rappresenta i dati da inviare come parte della richiesta POST.

Viene inizializzato un oggetto CURL utilizzando curl_init() e assegnato alla variabile $ch.

Le impostazioni per la richiesta CURL vengono configurate utilizzando le funzioni curl_setopt():

  • CURLOPT_URL: Specifica l'URL dell'API REST a cui inviare la richiesta.
  • CURLOPT_HTTPHEADER: Imposta l'intestazione HTTP per includere l'autorizzazione tramite il token di autenticazione.
  • CURLOPT_POST: Imposta la richiesta come POST.
  • CURLOPT_POSTFIELDS: Imposta i dati da inviare come parte della richiesta POST utilizzando l'array $post.
  • CURLOPT_RETURNTRANSFER: Imposta la richiesta CURL in modo che restituisca il risultato invece di stamparlo direttamente.

Viene eseguita la richiesta CURL utilizzando curl_exec($ch) e il risultato viene assegnato alla variabile $result.

Infine, la connessione CURL viene chiusa utilizzando curl_close($ch) e il risultato viene restituito dalla funzione con return $result.

Torna su