我正在实现与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,但您可以覆盖它。