这是我的代码我使用imgur api上传图片并通过我的表单在网页上显示。不显示实际图像,只显示损坏的页面图标,如果我将损坏的图像复制到单词或记事本中,则显示实际图像。显然,如果将图像复制到文字或记事本中,图像就存在并且它是正确的路径。此外,我非常确定api是有效的,因为我的数据库中保存的imgur url可以正常工作并显示图像。什么遗失或我应该像我显示图像一样改变?
if (isset($_POST['post'])) {
if ($_FILES['postimg']['size'] == 0) {
$postbody = $_POST['postbody'];
$loggedInUserId = check::isLoggedIn();
if (strlen($postbody) > 160 || strlen($postbody) < 1) {
die('Incorrect length!');
}
connect::query('INSERT INTO dry_posts VALUES (null, :postbody, NOW(), 0,:postimg)', array(':postbody' => $postbody));
// Post::createPost($_POST['postbody']);
} else {
$url = 'https://api.imgur.com/3/image'; // API endpoints, info: https://api.imgur.com/endpoints/image#image-upload
$client_id = ''; // Get client_id here: https://api.imgur.com/#registerapp
$fh = fopen($_FILES['postimg']['tmp_name'], 'r');
$read = fread($fh, $_FILES['postimg']['size']);
fclose($fh);
$post = array(
'image' => base64_encode($read)
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Client-ID '.$client_id
));
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$json = curl_exec($ch); // Response, info: https://api.imgur.com/#responses
curl_close($ch);
// $image = json_decode($json, true); // Array
$image = json_decode($json); // Object
// var_dump($image);
//$postimg = $image['data']['link']; // Array-style
$postimg = $image - > data - > link; // Object-style
connect::query('INSERT INTO dry_posts VALUES (null, \'\', NOW(), 0, :postimg)', array(':postimg' => $postimg));
}
}
$dbposts = connect::query('SELECT * FROM dry_posts ORDER BY id DESC');
$posts = "";
//here's how I display the images/posts
foreach($dbposts as $p) {
if (!connect::query('SELECT post_id FROM post_likes WHERE post_id=:postid', array(':postid' => $p['id']))) {
$posts. = "<img src='".$p['postimg'].
"'>".htmlspecialchars($p['body']).
" <
form action = 'try.php?postid=".$p['
id ']."'
method = 'post' >
<
input type = 'submit'
name = 'like'
value = 'Like' >
<
span > ".$p['likes']."
likes < /span> <
/form> <
hr / > < /br / >
";
} else {
$posts. = "<img src='".$p['postimg'].
"'>".htmlspecialchars($p['body']).
" <
form action = 'try.php?postid=".$p['
id ']."'
method = 'post' >
<
input type = 'submit'
name = 'unlike'
value = 'Unlike' >
<
span > ".$p['likes']."
likes < /span> <
/form> <
hr / > < /br / >
";
}
}
以及表格
<form action="try.php" class = "forum" method="post" enctype="multipart/form-data">
<textarea name="postbody" rows="4" cols="60" class = "text"></textarea>
<br />Upload an image:
<input type="file" name="postimg">
<input type="submit" name="post" value="Post">
<input type="submit" value="Upload">
</form>
<div class="posts">
<?php echo $posts; ?>
</div>
答案 0 :(得分:0)
我认为这称为anonymous use of the API,因此所有上传的图片都是匿名共享,而不会附加到您的帐户。
要将图片上传到您的私人帐户,您可能需要获取访问令牌,并使用Bearer
身份验证。