J'ai une forme comme ceci:En utilisant PHP et boucle pour poster un formulaire HTML qui contient un fichier
<form method="POST" action="i.php" enctype="multipart/form-data">
<input type="text" name="field1">
<input type="text" name="field2">
<input type="file" name="file">
<input type="hidden" name="MAX_FILE_SIZE" value="100000">
<input type="submit">
</form>
Sur la page J'ai déjà:
$URL = 'http://somewhere.com/catch.php';
$fields = array('field1'=>urlencode($_POST['field1'), 'field2'=>urlencode($_POST['field2'));
foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; };
rtrim($fields_string,'&');
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$URL);
curl_setopt($ch,CURLOPT_POST,count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS,$fields_string);
$result = curl_exec($ch);
curl_close($ch);
qui travaille à afficher le field1 & 2 champs. Est-il possible d'inclure le fichier dans ce processus de curl en quelque sorte? Comment ferais-je cela? Je suppose que je dois faire plus que simplement encoder la valeur du fichier.
donc basée sur la réponse de SimpleCoders je mis à jour à ce qui suit:
$URL = 'http://somewhere.com/catch.php';
$fields = array('field1'=>urlencode($_POST['field1'), 'field2'=>urlencode($_POST['field2'), 'files'=>'@'. $_FILES['file']['tmp_name']);
foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; };
rtrim($fields_string,'&');
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$URL);
curl_setopt($ch,CURLOPT_POST, 1);
curl_setopt($ch,CURLOPT_POSTFIELDS,$fields_string);
$result = curl_exec($ch);
curl_close($ch);
qui affiche OK, mais alors mon résultat tableau $ _FILES sur catch.php est vide. Accor à l'exemple n ° 2 sur http://www.php.net/manual/en/function.curl-setopt.php Cela devrait fonctionner. Je fais cela sur deux domaines différents ... cela pourrait-il être un problème?
Puisqu'il n'y a aucune garantie sur la vie d'un lien externe, pouvez-vous poster l'information ici, et laisser la référence? –
@Empathy: bien sûr, fait –
La communauté, et ceux à venir, merci. :) –