【问题标题】:How to keep the previous uploaded image (in db) after submitting a form without selecting a new image to be uploaded提交表单后如何保留先前上传的图像(在数据库中)而不选择要上传的新图像
【发布时间】:2015-06-11 19:10:11
【问题描述】:

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

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

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

通过编辑整个表单,填充所有字段但保留图像字段原样,最后提交,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 ?>" />

【问题讨论】:

    标签: php image forms upload


    【解决方案1】:

    这样的事情呢?

    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
    

    【讨论】:

    • 如果我想删除该图像怎么办... $_FILES['fileToUpload']['name'] 现在是空的...但是根据您的情况,它不会用空更新我的表图片网址 ...它将保留其旧网址
    【解决方案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 */
        }
    

    【讨论】:

    • Tnx Plamen。我按照你说的做了,但是现在在提交之后(并且更改了标题只是为了测试,没有图像可以选择第二次编辑时间)没有更新存储到 db。
    • 您必须添加字段 和 $_POST[ 'uploadedFileName'] 为您提供 mysql 中图像的名称。您可以在此字段中设置自定义值并更新名称。
    • 在文本字段中填充以前的值是浪费,您将使用相同的值更新图像列!只需添加 ELSE 子句并保存除图像之外的其他值...
    【解决方案3】:

    成功了,非常感谢

    简短的解决方案

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

    结论

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

    【讨论】:

      猜你喜欢
      • 2017-04-13
      • 2011-01-21
      • 1970-01-01
      • 2013-04-23
      • 2015-09-08
      • 2018-08-23
      • 2013-04-21
      • 2015-12-04
      • 1970-01-01
      相关资源
      最近更新 更多