我有一个表单,其中有一个上传按钮和一个删除按钮。
最初,我正在从数据库(Mysql)检索的表单上显示一个图像。
当我上传新图片时,图片会上传,但上一张图片(也就是初始图片)也会显示在图片上。
当我刷新页面或重新加载它然后没有显示图像时,我得到的是没有任何图像的框(即初始图像)。
我想在上传或删除新图片之前始终显示上传的图片,并删除初始图片的那一帧。我怎么能在PHP中这样做? 此代码在打开表单时显示初始图像,直到我没有更新:
// Connection to Database
$result1= mysql_query( "SELECT images FROM $table" ) or die("SELECT Error".mysql_error());
$row=mysql_fetch_array($result1);
echo "<img src='data:images/jpeg;base64," .base64_encode( $row['images'])."'width='100' height='100' />";
这是上传图片的代码:
$UPLOADDIR = "upload/";
if(isset($_POST['Submit']))
{
foreach ($_FILES as $key => $value)
{
$image_tmp = $value['tmp_name'];
$image = $value['name'];
$image_file = "{$UPLOADDIR}{$image}";
if(move_uploaded_file($image_tmp,$image_file))
{
mysql_select_db($database) or die("Unable to select database");
$result1= mysql_query( "SELECT images FROM $table WHERE images='$image'" )or die("SELECT Error: ".mysql_error());
$sql="DELETE FROM $table WHERE ID!=1";
mysql_select_db($database) or die("Unable to select database");
$ret=mysql_query($sql,$conn);
if(!$ret)
{
die(mysql_error());
}
$query = "INSERT INTO $table (images) VALUES ('$image')";
$data = mysql_query ($query)or die(mysql_error());
echo <<<HEREDOC
<div style="float:left;margin-right:10px;">
<img src="{$image_file}" alt="file not found" height="100" width="100"/>
</br>
</div>
HEREDOC;
}
else
{
echo "<h1>image file upload failed, image too big after compression</h1>";
}
}
}
else
{
?>
<form name='newad' method='post' enctype='multipart/form-data' action=''>
<table>
<tr>
<td><input type='file' name='image'></td>
</tr>
<tr>
<td><input name='Submit' type='submit' value='Upload image'></td>
</tr>
</table>
</form>
<?php
}
?>
我上传的图片保存在数据库中,点击上传按钮后显示上传的图片,但是当我重新加载页面或再次打开表单时,没有图像。
答案 0 :(得分:0)
在脚本开头,存储已上传的文件(如果已上载)。 然后稍后从数据库中获取存储的图像以进行显示。
编辑以获取更多详细信息:
当您将表单提交到php脚本时,请检查$ _FILES全局是否包含上载的文件。如果是这样,请将文件(最好使用新的随机名称)存储在映像目录中的某个位置,以及数据库中的位置。然后在显示图像时进一步向下,从数据库中检索图像的URL以放入img src标记。
但你应该开始摆弄,直到它是正确的。