Bei meinen lokalen Tests verwende ich den folgenden Code, um eine Datei über eine HTTP-Verbindung zu senden:
$url = 'https://...'; $ch = curl_init(); $tmpfile = 'teste.txt'; $curl_file = new CURLFile(realpath($tmpfile),'text/csv',$tmpfile); $file = array('file[]' => $curl_file); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $file); //$data); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); $response = curl_exec($ch); if(curl_error($ch)) { echo 'error:' . curl_error($ch); } else { echo $response; }
Dieser Code funktioniert perfekt!
Jetzt möchte ich eine Verbindung zu dieser URL aus meiner WordPress-Anwendung herstellen.
Das Problem ist, dass ich nicht weiß, wie man Dateien mit der wp_safe_remote_post sendet.
Ich habe den folgenden Code ausprobiert:
$url = 'https://...'; $tmpfile = WP_CONTENT_DIR . '/test.txt'; $params = array( 'method' => 'POST', 'timeout' => 60, 'body' => [ 'file[]' => realpath( $tmpfile ), ] ); $response = wp_safe_remote_post( $url, $params );
Aber der Remote-Server sagt, dass keine Datei gesendet wurde!
Was habe ich falsch gemacht? Wie funktioniert das?
Danke für Ihre Hilfe!