Maison >développement back-end >tutoriel php >Comment envoyer un fichier via cURL depuis un formulaire POST en PHP ?

Comment envoyer un fichier via cURL depuis un formulaire POST en PHP ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-09 17:08:02925parcourir

How to Send a File via cURL from a Form POST in PHP?

Envoyer un fichier via cURL depuis un formulaire POST en PHP

Lors de la gestion des téléchargements de fichiers à partir d'un formulaire POST en PHP, il est essentiel de comprendre comment utilisez cURL pour envoyer le fichier. Le balisage du formulaire comprend généralement un champ de saisie de fichier avec enctype="multipart/form-data".

Pour envoyer un fichier à l'aide de cURL avec une requête POST, utilisez l'approche suivante :

  1. Récupérer le chemin du fichier : Utilisez $_FILES'image' pour obtenir le chemin du fichier temporaire sur le serveur.
  2. Préparez les paramètres cURL : Construisez un tableau avec les détails du fichier. Par exemple :
$post = array(
    'image' => '@' . $_FILES['image']['tmp_name']
);
  1. Initialiser cURL :

    $ch = curl_init();
  2. Définir cURL options :

    curl_setopt($ch, CURLOPT_URL, 'http://example.com/curl_receiver.php');
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
  3. Exécuter la requête :

    curl_exec($ch);
  4. Fermer cURL :

    curl_close($ch);

Sur le côté réception, un script comme curl_receiver.php peut recevoir le fichier :

if (isset($_FILES['image'])) {
    move_uploaded_file($_FILES['image']['tmp_name'], 'uploads/'.$_FILES['image']['name']);
}
?>

Exemple :

Formulaire :

<form action="script.php" method="post" enctype="multipart/form-data">
    <input type="file" name="image" />
    <input type="submit" name="upload" value="Upload" />
</form>

Script ( script.php):

if (isset($_POST['upload'])) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, 'http://example.com/curl_receiver.php');
    curl_setopt($ch, CURLOPT_POSTFIELDS, array(
        'image' => '@' . $_FILES['image']['tmp_name']
    ));
    curl_exec($ch);
    curl_close($ch);
}

Script du récepteur (curl_receiver.php) :

if (isset($_FILES['image'])) {
    move_uploaded_file($_FILES['image']['tmp_name'], 'uploads/'.$_FILES['image']['name']);
}

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn