如何在 PHP 中使用 curl -T/--upload-file 和 POST



我正在实现与API的集成,根据文档中的示例,我需要使用-T/--upload-file发布文件。

curl -u "username:password" -0 –X POST -T filename.txt -H "Content-Type: text/plain" "http://url"

我的解决方案:

$fp = fopen('/home/myFile.txt', 'rb');
curl_setopt($ch, CURLOPT_INFILE, $fp);
curl_setopt($ch, CURLOPT_INFILESIZE, filesize('/home/myFile.txt'));

然而,问题是CURLOPT_INLINE仅在使用 PUT 时才有效,而示例使用的是 POST。

我已经看到了以下解决方案,但我认为这不是我应该使用的,因为它似乎与-T不同。我在文档中也没有看到任何提及键名称的内容。

curl_setopt($c, CURLOPT_POST, true);
curl_setopt($c, CURLOPT_POSTFIELDS, array('file'=>'@/home/myFile.pdf'));

有没有办法正确地做到这一点?

如果您将--libcurl code.c添加到 curl 命令行,您将确切地看到它使用了哪些 libcurl 选项,然后您将看到您在模拟该命令行的解决方案中缺少CURLOPT_CUSTOMREQUEST。即CURLOPT_INFILE方法将假定并默认为 PUT,但您可以覆盖它。

最新更新