当前位置: 首页 > 知识库问答 >
问题:

将原始图像数据张贴为卷曲中的多部分/表单数据

向泽语
2023-03-14

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

我没有问题与API与其他请求;只有张贴图像是一个问题。

我在客户端使用此表单:

<form action="http://myServerURL" method="POST" enctype="multipart/form-data">
    <input type="file" name="file" />
    <input type="Submit">
</form>
$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;
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLINFO_HEADER_OUT, true);

var_dump(curl_getinfo($ch));

请求头中的content-type现在显示正确了。但是图像似乎没有像API所期望的那样正确地发送。不幸的是,我无法访问API...

感谢您的帮助,谢谢

共有1个答案

轩辕经国
2023-03-14

从PHP 5.6开始,@$filePathcurlopt_postfields中不能工作,如果没有设置curlopt_safe_upload,并且在PHP 7中完全删除了它。您将需要使用一个CurlFile对象,这里是RFC。

$fields = [
    'name' => new \CurlFile($filePath, 'image/png', 'filename.png')
];
curl_setopt($resource, CURLOPT_POSTFIELDS, $fields);
 类似资料:
  • 问题内容: 我正在尝试使用multipart / form-data标头在PHP中使用cURL发布图像,因为我发送给的API期望图像以多部分形式发送。 使用其他请求与API通讯时,我没有任何问题;仅发布图像是一个问题。 我在客户端使用此表单: 这是我要发布到的服务器(在这里我试图将此数据转发到API): 使用下面的代码,我可以看到我的请求标头: 现在可以正确显示请求标题中的内容类型。但是似乎图像未

  • 我在通过VB.NET控制台应用程序向BambooHR API提交多部分表单时遇到了很多困难。我已经发布了我当前的代码以及下面文档中的一个示例请求,当我运行这个代码时,我得到了(400)个坏请求。我知道代码很乱,但我一直在努力让它工作。 如有任何帮助,我们将不胜感激。 下面是我的代码: 下面是文档中的示例请求:(链接:https://www.bamboohr.com/api/documentatio

  • 我正试图将一个文件发送到box(云存储)。应该很容易,但事实并非如此。 我使用RequestBin进行调试。 在命令行上使用curl时,它工作得很好(文件被张贴到框中): 卷曲cli(正确): 生坯 -------------------------------------------------------------------------------------------------nam

  • 我有一个问题与上传多部分形式的图像 下面是我从这个答案中使用的代码 然后我使用NSURLSession来应用请求 服务器说我没有选择要上传的图像,我现在只想上传图像 我必须使用图像路径上传任何图像或它的数据就足够了吗? 我是否错过了任何事情,任何有助于理解这一点的帮助?

  • 我正在尝试使用facebook api从保存在页面上的画布上传图像: 这是blob转换器: 我收到一个错误:,因此上传者似乎无法识别该blob为有效文件。 更新1: 我发了这篇帖子:将数据URI转换为文件,然后将其附加到FormData关于将blob转换为FormData,尝试如下: 但还是一样的错误。 更新2: 甚至尝试过这个XHR post解决方案,使用Facebooks javascript

  • 我正在尝试从接收包含3个参数的多部分请求: 一个 一个 我在控制器中接收到和fine,但json的所有字段都为NULL。会有什么问题吗? JSON 控制器 邮差