Ich möchte wissen, wie man Dateien mit cURL oder irgendetwas anderem in PHP hochlädt. Ich habe viele Male in Google gesucht, aber keine Ergebnisse.
Mit anderen Worten, der Benutzer sieht eine Datei-Upload-Schaltfläche in einem Formular, das Formular wird in mein PHP-Skript gepostet, und mein PHP-Skript muss es erneut in einem anderen Skript (z. B. auf einem anderen Server) veröffentlichen.
Ich habe diesen Code, um die Datei zu empfangen und hochzuladen
Code:
echo"".$_FILES['userfile']."";
$uploaddir = './';
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);
if ( isset($_FILES["userfile"]) ) {
echo '<p><font color="#00FF00" size="7">Uploaded</font></p>';
if (move_uploaded_file
($_FILES["userfile"]["tmp_name"], $uploadfile))
echo $uploadfile;
else echo '<p><font color="#FF0000" size="7">Failed</font></p>';
}
Ich möchte, dass der Code die Datei an die Empfängerdatei sendet.
Antworten:
Verwenden:
if (function_exists('curl_file_create')) { // php 5.5+ $cFile = curl_file_create($file_name_with_full_path); } else { // $cFile = '@' . realpath($file_name_with_full_path); } $post = array('extra_info' => '123456','file_contents'=> $cFile); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL,$target_url); curl_setopt($ch, CURLOPT_POST,1); curl_setopt($ch, CURLOPT_POSTFIELDS, $post); $result=curl_exec ($ch); curl_close ($ch);
Sie können auch verweisen:
http://blog.derakkilgo.com/2009/06/07/send-a-file-via-post-with-curl-and-php/
Wichtiger Hinweis für PHP 5.5+:
Jetzt sollten wir https://wiki.php.net/rfc/curl-file-upload verwenden, aber wenn Sie diesen veralteten Ansatz weiterhin verwenden möchten, müssen Sie festlegen
curl_setopt($ch, CURLOPT_SAFE_UPLOAD, false);
quelle
@
. Wie auch immer, der Asnwer wird aus einer benutzerdefinierten Verwendung von Curl aus einem Blog kopiert. Die richtige Antwort lautet, dass das@
Zeichen es als Datei definiert, nicht als var. $ post enthält ein@filename.jpg
Beispiel.curl_file_create
ist erforderlich (die von Karthik bereitgestellte Lösung funktioniert nicht). Also sollte der Code auf so etwas aktualisiert werden:if function_exists('curl_file_create')) { $cFile = curl_file_create($dest); } else { $cFile = '@' . realpath($dest); }
extra_info => 123456
verwendet?