我有一个在终端中正常工作的curl脚本。
curl -XPOST \
-F "file=@var/www/myfile.wav;type=audio/wav" \
-H 'Authorization: Bearer $MY_TOKEN' \
'https://myurl'
我在我的php文件中尝试过这种方式,
<?php
$url = "https://myurl";
$key = "myKey";
$path = "/var/www/";
$fileName = "myfile.wav";
$data['file']= "@".$path.$fileName;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER,array("Authorization: Bearer $key"));
$response = curl_exec($ch);
curl_close($ch);
echo $response;
?>
我从服务器收到错误。似乎我没有像服务器期望的那样提出请求。我错过了PHP脚本中的任何内容吗?
答案 0 :(得分:1)
试试这个:
$ data = array('file'=&gt; file_get_contents($ path。$ fileName));
您使用的CURL库可能存在问题。
或者可能阻止PHP建立HTTPS连接。
尝试使用PHP中的CURL进行一系列简单测试,就像第一次使用POST false:
<?php
$url = "https://myurl/";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
header("Content-Type: text/plain");
echo $response;
?>
然后使用POST true ...
<?php
$url = "https://myurl/";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
header("Content-Type: text/plain");
echo $response;
?>
答案 1 :(得分:0)
由于它是HTTPs URL,您需要使用此参数
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);