gpt4 book ai didi

php - 在 curl 中将原始图像数据作为 multipart/form-data 发布

转载 作者:IT王子 更新时间:2023-10-28 23:44:55 25 4
gpt4 key购买 nike

我正在尝试使用 multipart/form-data header 在 PHP 中发布带有 cURL 的图像,因为我发送到的 API 期望图像以多部分形式发送。

我没有遇到其他请求与 API 交谈的问题;只发布图片是个问题。

我在客户端使用这个表单:

<form action="http://myServerURL" method="POST" enctype="multipart/form-data">
<input type="file" name="file" />
<input type="Submit">
</form>

这是我要发布到的服务器(这里我试图将此数据转发到 API):

$ch = curl_init($url);
curl_setopt ($ch, CURLOPT_POST, 1);
curl_setopt ($ch, CURLOPT_POSTFIELDS, $imgRawData); // <-- raw data here hm?
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); <-- using this as I wanted to check if HTTPHEADER is set
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: multipart/form-data')); <-- setting content-type header?
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1);

// i get response from the server
$response = curl_exec( $ch );

// with this I can check what kind of content type the last request had?
$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;

通过下面的代码,我可以看到我的请求 header :

curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLINFO_HEADER_OUT, true);

var_dump(curl_getinfo($ch));

现在可以正确显示请求 header 中的内容类型。但似乎图像没有像 API 预期的那样正确发送。不幸的是,我无权访问 API...

感谢您的帮助,谢谢

最佳答案

从 PHP 5.6 开始,@$filePath 在没有设置 CURLOPT_SAFE_UPLOAD 的情况下将无法在 CURLOPT_POSTFIELDS 中工作,它在 PHP 7 中被完全删除。将需要使用 CurlFile对象,RFC here .

$fields = [
'name' => new \CurlFile($filePath, 'image/png', 'filename.png')
];
curl_setopt($resource, CURLOPT_POSTFIELDS, $fields);

关于php - 在 curl 中将原始图像数据作为 multipart/form-data 发布,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21905942/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com