php - 从 mysql 数据库检索预览时损坏

标签 php mysql image upload

我是 php 和 mysql 的新手,完全被困在这里。

我想在我的网页上上传图像,以在图像库中显示上传的图像。

该代码成功地将图像存储在数据库中,但在图库中显示图像时不起作用。相反,它只显示损坏的缩略图。

请帮助我。我为此工作了太长时间。

这是index.php:

<form action="addexec.php" method="post" enctype="multipart/form-data" name="addroom">
Select Image: <br />
<input type="file" name="image" class="ed"><br />
Caption<br />
<input name="caption" type="text" class="ed" id="brnu" />
<br />
<input type="submit" name="Submit" value="Upload" id="button1" />
</form>
<br />

// Photo Archive
<br />
<br />
<?php
include('config.php');
$result = mysql_query("SELECT * FROM photos");
while($row = mysql_fetch_array($result))
{
echo '<div id="imagelist">';
echo '<p><img src="'.$row['location'].'"></p>';
echo '<p id="caption">'.$row['caption'].' </p>';
echo '</div>';
}
?>

这是 addexec.php

<?php
include('config.php');
if (!isset($_FILES['image']['tmp_name'])) {
echo "";
}else{
$file=$_FILES['image']['tmp_name'];
$image= addslashes(file_get_contents($_FILES['image']['tmp_name']));
$image_name= addslashes($_FILES['image']['name']);

        move_uploaded_file($_FILES["image"]["tmp_name"],"photos/" .    
  $_FILES["image"]["name"]);

        $location="photos/" . $_FILES["image"]["name"];
        $caption=$_POST['caption'];

        $save=mysql_query("INSERT INTO photos (location, caption) VALUES 
  ('$location','$caption')");
        header("location: index.php");
        exit();                 
}
?>

最佳答案

  1. $location$caption 上使用 mysql_real_escape_string()!!!
  2. 请记住,如果您上传的图片名称与 已存在于您的数据库中,您将覆盖旧的!
  3. 使用 pdo_mysql 或 mysqli
  4. 检查move_uploaded_file()的返回值

更新

我已在我的网站上运行了您的代码。我测试的第一个文件名中包含 %20,但失败了。

解决方案非常简单,只需在 index.php 中的位置周围添加 urlencode() 即可,因此该行如下所示:

echo '<p><img src="'.urlencode($row['location']).'"></p>';

您可能还需要在下一行使用htmlentities()标题

无论如何,我上面的笔记仍然很重要,我建议遵循这些笔记。

关于php - 从 mysql 数据库检索预览时损坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22788947/

相关文章:

CSS - 无法控制图像链接的边框颜色

javascript - MySQL 减少 onclick 查询次数 - 异步更新

php - Zend_Paginator 作为对象返回

mysql - SQL 查询连接表并比较总和以返回最大值

PHP/MYSQL错误: mysql_num_rows(): supplied argument is not a valid

algorithm - 图像变换 : point to point

java - 通过保持不同屏幕分辨率的纵横比来计算图像大小

php - 错误 - 网页在 PHP 中已过期?

php - 如何在管理区域复制 WordPress 风格的表格

php - 摆脱 mysql_real_escape_string() 解析字符串上的\字符