首页  >  文章  >  后端开发  >  如何通过 PHP 的 cURL 中的 Multipart/Form-Data 发送原始图像数据?

如何通过 PHP 的 cURL 中的 Multipart/Form-Data 发送原始图像数据?

Susan Sarandon
Susan Sarandon原创
2024-11-21 07:29:13934浏览

How to Send Raw Image Data via Multipart/Form-Data in cURL for PHP?

通过 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn