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.
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.