Xampp php 权限被拒绝时尝试使用 imgur API 发布图像?



我得到的错误:

警告:file_get_contents(https://api.imgur.com/3/image(:无法打开流:HTTP 请求失败!HTTP/1.1 403 权限被拒绝 C:\xampp\htdocs\sn0\classes\Image.php 在第 22 行

注意:尝试获取非对象的属性 C:\xampp\htdocs\sn0\classes\Image.php 在第 25 行

注意:尝试获取非对象的属性 C:\xampp\htdocs\sn0\classes\Image.php 在第 25 行

这是我的图片.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);
}
}
?>

你提出了错误的请求。

一开始你需要生成你的客户端ID(更多信息@https://api.imgur.com/#registerapp(

为此,请转到 https://api.imgur.com/oauth2/addclient 和 选择"无需用户授权的匿名使用"选项作为"授权类型"。

使用授权:客户端 ID不是持有者,您可以保留file_get_contents(所以 - 然后您只需要更改授权标头(,但 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);
}
}
file_get_contents()

用于GET请求。您需要在 PHP 中使用 CURL 才能从服务器向另一个服务器发出 POST 请求。

最新更新