php cURL不接受我的内容类型

php cURL不接受我的内容类型,php,curl,put,Php,Curl,Put,我试图使用cURL来上传一个文件,使用PUT,内容类型为application/octet stream,但即使使用cURL\u setopt设置,内容类型也总是“text/html”。我已经在firefox和chrome上进行了测试,看看这是一个浏览器怪癖还是什么(不是),所以我不确定我能做些什么 error_reporting(E_ALL); ini_set('display_errors', 1); $ch = curl_init();

我试图使用cURL来上传一个文件,使用PUT,内容类型为application/octet stream,但即使使用cURL\u setopt设置,内容类型也总是“text/html”。我已经在firefox和chrome上进行了测试,看看这是一个浏览器怪癖还是什么(不是),所以我不确定我能做些什么

         error_reporting(E_ALL);
    ini_set('display_errors', 1);
            $ch = curl_init();
            $localfile = 'upload.txt';
            $fp = fopen($localfile, 'r');
            curl_setopt($ch, CURLOPT_URL, $url.$localfile.'?type=file');
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
            curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
            curl_setopt($ch, CURLOPT_HEADER, true);
            curl_setopt($ch, CURLOPT_HTTPHEADER, array("content-type: application/octet-stream"));
            curl_setopt($ch, CURLOPT_UPLOAD, 1);
            curl_setopt($ch, CURLOPT_INFILE, $fp);
            curl_setopt($ch, CURLOPT_INFILESIZE, filesize($localfile));
            curl_setopt($ch, CURLOPT_USERPWD, $un.":".$pw);
            curl_setopt($ch, CURLOPT_VERBOSE, 1);
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
            $msg = curl_exec ($ch);
            $error_no = curl_errno($ch);
            $print = curl_getinfo($ch);
            curl_close ($ch);
            if ($error_no == 0) {
                    $error = 'File uploaded succesfully.';
            } else {
                    $error = 'File upload error.';
            }

感谢阅读。

请使用
内容类型
而不是
内容类型
重试。可能您也需要添加
内容长度
,我不知道cURL是否会自动添加该内容长度。@Havenard我将使用什么值作为内容长度?您试图上载的文件的确切长度(以字节为单位)。@Havenard我添加了内容长度,并尝试了内容类型大小写,不起作用。我建议您尝试使用浏览器执行此操作,然后在web服务器日志中比较cURL正在尝试执行的操作和浏览器执行的操作。也许像Wireshark这样的网络调试工具也会有所帮助。