通过 PHP 的 cURL 中的 Multipart/Form-Data 发送原始图像数据
与需要通过 multipart/ 获取图像数据的 API 交互时表单数据,正确发布图像可能具有挑战性。在 PHP 中,此过程涉及设置 multipart/form-data 标头并处理原始图像数据。
表单结构
在客户端,可以创建 HTML 表单如图:
<form action="http://myServerURL" method="POST" enctype="multipart/form-data"> <input type="file" name="file" /> <input type="Submit"> </form>
服务器端处理
在服务器端,发布图像数据的 PHP 代码为:
$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;
使用 CurlFile 对象
在 5.6 之前的 PHP 版本中,使用 @$filePath 而不设置 CURLOPT_SAFE_UPLOAD 可以工作。但是,在 PHP 7 及更高版本中,需要使用 CurlFile 对象来安全地处理文件上传。这可确保原始图像数据正确传输。
以上是如何通过 PHP 的 cURL 中的 Multipart/Form-Data 发送原始图像数据?的详细内容。更多信息请关注PHP中文网其他相关文章!