我得到的错误:
警告:file_get_contents(https://api.imgur.com/3/image):打开流失败:HTTP请求失败! HTTP / 1.1 403权限被拒绝 C:\ xampp \ htdocs \ sn0 \ classes \ Image.php在第22行
注意:尝试获取非对象的属性 第25行的C:\ xampp \ htdocs \ sn0 \ classes \ Image.php
注意:尝试获取非对象的属性 第25行的C:\ xampp \ htdocs \ sn0 \ classes \ Image.php
这是我的Image.php文件:
<?php
class Image {
public static function uploadImage($formname, $query, $params) {
$image = base64_encode(file_get_contents($_FILES[$formname]['tmp_name']));
$options = array('http'=>array(
'method'=>"POST",
'header'=>"Authorization: Bearer ###\n".
"Content-Type: application/x-www-form-urlencoded",
'content'=>$image
));
$context = stream_context_create($options);
$imgurURL = "https://api.imgur.com/3/image";
if ($_FILES[$formname]['size'] > 10240000) {
die('Image too big, must be 10MB or less!');
}
$response = file_get_contents($imgurURL, false, $context);
$response = json_decode($response);
$preparams = array($formname=>$response->data->link);
$params = $preparams + $params;
DB::query($query, $params);
}
}
?>
答案 0 :(得分:1)
您提出了错误的请求。
一开始,您需要生成您的客户ID(更多信息@ https://api.imgur.com/#registerapp)
要执行此操作,请转到https://api.imgur.com/oauth2/addclient 和 选择未经用户授权的匿名用法选项作为授权类型。
使用授权:客户端ID ,而不是承载,您可以保留file_get_contents(因此-那么您只需要更改授权标头),但是CURL会更好。
带有CURL的示例:
<?php
class Image
{
public static function uploadImage($formname, $query, $params)
{
$client_id = 'YOUR CLIENT ID';
$image = base64_encode(file_get_contents($_FILES[$formname]['tmp_name']));
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://api.imgur.com/3/image.json',
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTPHEADER => array(
'Authorization: Client-ID ' . $client_id
) ,
CURLOPT_POST => TRUE,
CURLOPT_RETURNTRANSFER => TRUE,
CURLOPT_POSTFIELDS => array(
'image' => $image
)
));
$out = curl_exec($curl);
curl_close($curl);
$response = json_decode($out);
$preparams = array(
$formname => $response->data->link
);
$params = $preparams + $params;
DB::query($query, $params);
}
}
答案 1 :(得分:0)
file_get_contents()
用于GET请求。您需要在PHP中使用CURL才能从服务器向另一个服务器发出POST请求。