Senden von Rohbilddaten über Multipart/Form-Data in cURL für PHP
Bei der Interaktion mit einer API, die Bilddaten über Multipart/ Formulardaten kann das korrekte Posten des Bildes eine Herausforderung sein. In PHP umfasst dieser Prozess das Festlegen von Multipart-/Formulardaten-Headern und die Verarbeitung von Rohbilddaten.
Formularstruktur
Auf der Clientseite kann das HTML-Formular erstellt werden wie gezeigt:
<form action="http://myServerURL" method="POST" enctype="multipart/form-data"> <input type="file" name="file" /> <input type="Submit"> </form>
Serverseitige Verarbeitung
Auf der Serverseite wird die PHP-Code zum Posten der Bilddaten wäre:
$ch = curl_init($url); curl_setopt($ch, CURLOPT_POST, 1); $filePath = '/path/to/image.png'; $fields = [ 'name' => new \CurlFile($filePath, 'image/png', 'filename.png') ]; curl_setopt($ch, CURLOPT_POSTFIELDS, $fields); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_COOKIEFILE, $cookieJar); curl_setopt($ch, CURLOPT_HEADER, 1); curl_setopt($ch, CURLINFO_HEADER_OUT, 1); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: multipart/form-data')); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // Get the response and check the content type $response = curl_exec($ch); $requestContentType = curl_getinfo($ch, CURLINFO_CONTENT_TYPE); echo "<br>request Content Type was:".$requestContentType."<br>"; curl_close($ch); echo "<br><b>SERVER POST IMAGE RESPONSE:</b><br>"; echo $response;
Verwendung eines CurlFile-Objekts
In PHP-Versionen vor 5.6 würde die Verwendung von @$filePath ohne die Einstellung von CURLOPT_SAFE_UPLOAD funktionieren . In PHP 7 und höher ist es jedoch erforderlich, ein CurlFile-Objekt zu verwenden, um Datei-Uploads sicher zu verarbeiten. Dadurch wird sichergestellt, dass die Rohbilddaten korrekt übertragen werden.
Das obige ist der detaillierte Inhalt vonWie sende ich Rohbilddaten über Multipart/Form-Data in cURL für PHP?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!