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
.