卷曲CURLOPT_UPLOAD和CURLOPT_FOLLOWLOCATION无法一起工作(libcurl)

时间:2016-03-10 04:44:31

标签: curl libcurl

我在网上搜索但找不到这个答案。因此在此发布。

在我的代码中,我将二进制流上传到服务器,使用CURLOPT_UPLOAD设置为true(PUT请求)并设置CURLOPT_READFUNCTION和CURLOPT_READDATA以及CURLOPT_INFILESIZE_LARGE以发送流。

结束点网址最近更改​​导致301永久性错误。我不想更改代码来读取301并进行适当的重定向,因为这似乎是反直觉的。

看到CURLOPT_FOLLOWLOCATION通知curl自动重定向。但它没有按预期重定向。我在googled时看到对POST + FOLLOWLOCATION的引用,但没有PUT + FOLLOWLOCATION。

所以我的问题是。 FOLLOWLOCATION应该在libcurl中正确使用PUT吗? 如果没有,你能告诉我有哪些替代方案可以自动重定向吗?

1 个答案:

答案 0 :(得分:1)

我在这里遇到了同样的问题,但是当我尝试发送一个多维数组并将我的有效负载放入http_build_query函数时,我注意到我的文件失败了。 解决方案:我将所有有效负载编码为一个字符串,并将我的文件与剩余的有效负载并排放置。所以我删除了函数http_build_query并发送了我的数据数组。 它有效!

看起来PHP不会在你发送文件时:同时放置多维数组+文件+ http_build_query。