如何在提交表单后保留上一个上传的图像(在db中),而不选择要上载的新图像

时间:2015-04-07 08:40:34

标签: php image forms upload

我有一个简单的表单来创建文章:标题,图片,类别,正文等。 我的问题是图像输入。

选择一个新的并提交一切正常:

  • 图像正在上传到服务器
  • 图像的标题正在保存到db
  • 我可以在文章中打印出来。

通过编辑整个表单,填充所有字段,但保留图像字段,最后提交,db中的图像字段值将变为空。

我如何配置php文件,所以每次用户提交 没有选择图像的形式(如果有预先上传的图像  该文章)保持提交前一个图像(从db) 没什么。?


如果这些信息可以提供任何帮助:

我可以像这样打印图像:<?php echo '<img src="'.$results['article']->img.'" width="100px">'; ?>

图像的简单输入字段:

<input type="file" name="fileToUpload" id="fileToUpload"  value="<?php echo $results['article']->img ?>" />

3 个答案:

答案 0 :(得分:5)

这样的事情怎么样?

if(!empty($_FILES['fileToUpload']['name'])) //new image uploaded
{
   //process your image and data
   $sql = "UPDATE table SET name=$someName, image=$someImageName,... WHERE id = $someId";//save to DB with new image name
}
else // no image uploaded
{
   // save data, but no change the image column in MYSQL, so it will stay the same value
   $sql = "UPDATE table SET name=$someName,... WHERE id = $someId";//save to DB but no change image column
}
//process SQL query in $sql

答案 1 :(得分:2)

创建一个if子句,检查fileupload输入是否为空。如果为空则不执行查询。

使用不带属性值的input type =“file”。

<input type="file" name="fileToUpload" id="fileToUpload" />

以下是if子句

的示例
if(!empty($_FILES['fileToUpload']['name'])) {
        $origFile = $_FILES['fileToUpload']['name'];
        $tempFile = $_FILES['fileToUpload']['tmp_name'];
        $sizeFile = $_FILES['fileToUpload']['size'];

        /* UPLOAD CODE GOES HERE */
    }

答案 2 :(得分:0)

工作正常,非常感谢

简短解决方案

  1. 检查文件是否为空:if(!empty($_FILES['fileToUpload']['name']))
  2. 使用IF语句中的表中提及图像列的方式进行更新查询, 如果未上传图片,则它将上传
  3. 在ELSE语句中不提及表中图像列的情况下进行更新查询,如果文件为空,则会上传

结论

下次更新任何其他字段时,图像不会消失,这意味着文件路径在数据库中不会为空,并且如果已经存在,则除非您手动更改它,否则它将不会更改。