我正在开发一个cms。
表客户端包含许多字段,其中一个是图像标题。
当用户上传文件(图像)时,文件存储在公共文件夹中。
图像标题字段检索文件的最终名称并将其存储在表格中。
问题是当用户想要更新信息时。如果用户不想更改图像,当他点击“更新”时,图像标题字段为空,因此图像的路径变为空,现在他只显示(无图像)。
继承人我一直在努力做的事情:
HTML表单:
<p>
<label for="image_caption">Image Caption:</label>
<input name="image_caption" id="image_caption" type="text" class="formbox" size="60" disabled="disabled" value="<?php echo htmlentities($row['image_caption']); ?>" />
</p>
<p>
<label for="image">Insert image:</label>
<input type="hidden" name="MAX_FILE_SIZE" value="<?php echo MAX_FILE_SIZE; ?>" />
<input type="file" name="image" id="foto" value="<?php echo htmlentities($row['image_caption']); ?>"/>
</p>
<p>
<?php
if($row['image_caption']!= ""){
?>
<img src="../images/clientes/<?php echo $row['image_caption'];?>" width="194" height="145" title="Imagem cliente" class="floatright"/>
<?php
}else{
?>
<img src="../images/sem_imagem.gif" width="194" height="145" title="Imagem não disponível" class="floatright"/><br />
<?php
}
?>
</p>
<p>
<input type="submit" name="update" value="Update" />
<input name="cliente_id" type="hidden" value="<?php echo $row['codigo']; ?>" />
</p>
现在上传PHP代码(香港专业教育学院刚刚插入了我想要展示的代码):
// This checks if the file input is empty, and if it is, insert the value from the table that was previously inserted
if(empty($_FILES['image']['name'])){
$image_caption = $row['image_caption'];
}else{
$image = str_replace(' ', '_', $_FILES['image']['name']);
// move the file to the upload folder and rename it
move_uploaded_file($_FILES['image']['tmp_name'],UPLOAD_DIR.$foto);
$image_caption = $image;
}
答案 0 :(得分:1)
我仍然不确定我理解,但你不能只将原始文件的名称作为隐藏字段传递吗?然后如果没有上传,请使用它。
编辑:刚刚看过您的评论,您已经拥有原始文件的名称,因此将PHP更改为:if(empty($_FILES['image']['name'])){
$image_caption = $_POST['image_caption'];
}else{
....(etc)
应该有效,不是吗?
当然,如果你要做那样的话,你应该对发布的变量进行某种消毒,以确保没有任何肮脏......
答案 1 :(得分:0)
表单提交后,您是否从数据库中获取信息?我的意思是,$ row ['nome_foto']实际上是否包含前一个路径?
编辑:无论哪种方式,如果没有提供新路径,最好不要更新数据库中的路径字段。
此外,您需要在上传中添加某种形式的支票以确保它是一张图片 - 如果我愿意,我现在可以将PHP脚本或病毒上传到服务器。
答案 2 :(得分:0)
我不确定我是否理解正确,但如果您使用数据库中的数据填充更新表单,我会给它一个镜头 - 然后图像标题字段将不会为空,即使该人只更改了他的名字和留下一切。