使用PHP Curl调用CrowdStrike API创建Put文件时遇415不支持媒体类型错误
解决PHP Curl调用CrowdStrike API上传文件的415错误
出现415 Unsupported Media Type错误,主要是以下几个问题导致的,逐个修正即可:
1. 移除手动设置的Content-Type: multipart/form-data
当使用CURLFILE上传文件时,PHP的Curl会自动生成正确的multipart/form-data请求头(包含boundary分隔符)。手动设置这个头会覆盖自动生成的内容,导致服务器无法正确解析请求体结构,这是触发415错误的核心原因。
修改后的请求头数组应为:
$header = [ $authorization ];
2. 修正file字段名的空格
代码里'file '=> new CURLFILE(...)多了一个空格,字段名需改为'file',和API要求的字段名严格匹配。
3. 移除多余的content字段
根据CrowdStrike Real-Time Response的Put Files API规则,上传文件时不需要content字段,这个多余字段可能干扰服务器对请求的解析,直接删除即可。
修正后的完整代码
$curl = curl_init(); $authorization = 'authorization: Bearer '.trim($token); $header = [ $authorization ]; curl_setopt_array($curl, array( CURLOPT_URL => 'https://api.us-2.crowdstrike.com/real-time-response/entities/put-files/v1', CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_POSTFIELDS => array( 'name' => 'test_file.jpg', 'description' => 'testing', 'file' => new CURLFILE('/C:/test_file.jpg') ), CURLOPT_HTTPHEADER => $header )); $response = curl_exec($curl);
额外验证点
- 确保
CURLFILE的文件路径正确,Windows路径可用C:/test_file.jpg或C:\\test_file.jpg两种格式,PHP均能识别。 - 确认API Token具备Real-Time Response的文件上传权限,权限不足也可能引发异常,但本次415错误核心原因是请求格式问题。
内容的提问来源于stack exchange,提问作者unice
相关产品推荐
相关产品推荐

