我正在使用CMS,允许用户插入文章,如果他希望他可以上传相应文章的图像,文章文本工作正常,问题是图像没有显示,即使我没有上传任何图像“数组”这个词出现在图像所在的地方,我的文字输入与文章文本相同。这些图像存储在mysql中,类型为“blob”。有小费吗?感谢
PHP:
<?php
session_start();
include_once('../includes/connection.php');
if(isset($_SESSION['logged_in'])) {
// display add page
if (isset($_POST['title'], $_POST['content'])) {
$title = $_POST['title'];
$content = $_POST['content'];
$image = $_FILES['image']['name'];
if (empty($title) || empty($content)) {
$error = 'Todos os campos têm de ser preenchidos!';
}
else {
$query = $pdo->prepare('INSERT INTO articles(article_title, article_content, article_img, article_timestamp) VAlUES (?, ?, ?, ?)');
$query->bindValue(1, $title);
$query->bindValue(2, $content);
$query->bindValue(3, $image);
$query->bindValue(4, time());
$query->execute();
header('Location:index.php');
}
}
}
else {
header('Location:index.php');
}
?>
<html>
<head>
<title>AdminPT</title>
<meta charset="UTF-8">
<link rel ="stylesheet" href="../assets/style.css"/>
</head>
<body>
<div class="container">
CMS
<br>
<h4 id ="add">Adicionar Artigo</h4>
<?php
if (isset($error)) { ?>
<small style="color:#aa0000"><?php echo $error; ?></small>
<?php } ?>
<form action="add.php" method="post" autocomplete="off" enctype="multipart/form-data">
<input id="title" type="text" name="title" placeholder="Título"/><br><br>
<textarea id="content" rows="15" placeholder="Conteúdo" name="content"></textarea>
<input type="file" name="image"/><br><br>
<input id="addBtn" type="submit" value="Adicionar Artigo"/>
</form>
<a id="back" href="../admin">← Voltar</a>
</div>
</body>
</html>
显示内容(HTML):
<div id="news">
<?php foreach ($articles as $article) { ?>
<div><h2><?php echo utf8_encode($article['article_title']); ?></h2><div id="newsImg"><?php echo $article['article_img']; ?></div><br><span id="date">Publicado
<?php
setlocale(LC_ALL, 'pt_BR.utf8', 'Portuguese_Brazil');
//setlocale(LC_ALL, NULL);
date_default_timezone_set('Europe/Lisbon');
$uppercaseMonth = ucfirst(gmstrftime('%B'));
echo utf8_encode(strftime( '%a, '.$uppercaseMonth.' %d de %Y'/* - %H:%M'*/, $article['article_timestamp']));
?></span><p><?php echo utf8_encode($article['article_content']); ?><br><br><span id="print"><a onclick="javascript:window.print();" href="#">Imprimir</a></span><span id="link"><a href="#">Enviar link</a></p></div>
<?php } ?>
</div>
答案 0 :(得分:0)
请将此行($ image = $ _FILES ['image'];)更改为$ image = $ _FILES ['image'] [“name”];
答案 1 :(得分:0)
除了$ image = $ _FILES ['image'] [“name”];你需要在它之前添加其余的相对/绝对路径,例如
$image = "/uploadedimages/" . $_FILES['image']['name'];
答案 2 :(得分:0)
a)当您提交表单时,图像存储在服务器的临时空间中,因此首先需要将该图像移动到项目目录中,还可以在将图像移动到目录时更改图像名称
b)成功移动图像后,将图像名称存储在数据库中
c)当你需要显示图像时,通过添加类似(http://localhost/sample-project)和图像目录(上传)和图像名称(图像名称保存在数据库中)的baseurl来制作完整的http url图像,这样它变为http://localhost/sample-project/uploads/image1.jpg