【问题标题】:how to store & get file from database using codelgniter php & my sql如何使用codeigniter php和mysql从数据库存储和获取文件
【发布时间】:2022-10-07 00:17:18
【问题描述】:

我可以将文件存储到数据库中,但无法获取/显示存储在数据库中的文件

文件存储在数据库中,但无法从数据库中显示

我正在使用以下代码

<?php

class file_upload extends CI_Controller
{

    public function index()
    {
        echo \"  <head>
        <title>Upload Image To Database</title>
      </head>
      <body>
        <!-- (A) HTML FILE UPLOAD FORM -->
        <form method=\'post\' enctype=\'multipart/form-data\'>
          <input type=\'file\' name=\'upload\' accept=\'.png,.gif,.jpg,.webp\' required/>
          <input type=\'submit\' name=\'submit\' value=\'Upload Image\'/>
        </form>\";

        if (isset($_FILES[\'upload\'])) 
        {
          $imgname=$_FILES[\"upload\"][\"name\"];
          $data[\"img_name\"]=$_FILES[\'upload\'][\'name\'];
          $data[\"img_data\"]=file_get_contents($_FILES[\"upload\"][\"tmp_name\"]);
          $this->db->insert(\'images\',$data);
          $data=$this->db->query(\'select * from images where img_name=\"$imgname\"\');
          foreach ($data->result() as $row)
          {
            print_r($row->img_data);
            echo \"<img src=\'data:image/jpg;charset=utf8;base64, \";
            echo \"base64_encode($row->img_data)\";
            echo \"height=100 width=100>\";
          }

        }
    }  
}

?>
  • 您不应将文件本身存储在数据库中,而应将其存储在文件系统上的路径以及它的静态 url 中。

标签: php


【解决方案1】:

你很亲密。你base64_encode 不能在这样的字符串插值中执行。您根本无法在字符串插值中运行函数。这应该有效。

<?php

class file_upload extends CI_Controller
{

    public function index()
    {
        echo "  <head>
        <title>Upload Image To Database</title>
      </head>
      <body>
        <!-- (A) HTML FILE UPLOAD FORM -->
        <form method='post' enctype='multipart/form-data'>
          <input type='file' name='upload' accept='.png,.gif,.jpg,.webp' required/>
          <input type='submit' name='submit' value='Upload Image'/>
        </form>";

        if (isset($_FILES['upload'])) 
        {
          $imgname=$_FILES["upload"]["name"];
          $data["img_name"]=$_FILES['upload']['name'];
          $data["img_data"]=file_get_contents($_FILES["upload"]["tmp_name"]);
          $this->db->insert('images',$data);
          $data=$this->db->query('select * from images where img_name="$imgname"');
          foreach ($data->result() as $row)
          {
            print_r($row->img_data);
            echo "<img src='data:image/jpg;charset=utf8;base64, ";
            echo base64_encode($row->img_data);
            echo "'height=100 width=100>";
          }

        }
    }  
}

?>

此外,由于您已硬编码jpg,如果您上传了除此之外的任何内容,则它可能无法正确显示在图像标签中。

总的来说,最好将图像存储在某个目录中,然后在数据库中存储有关图像的信息。类型、宽度、高度、位置等

此外,由于您使用的是 CI,因此我建议您查看其处理文件的便捷功能。 具体https://www.codeigniter.com/user_guide/incoming/incomingrequest.html?highlight=file%20upload#uploaded-fileshttps://www.codeigniter.com/user_guide/helpers/filesystem_helper.html

快乐编码!

【讨论】:

  • 我想必须将文件存储在数据库中
  • @RenishBatadaSocialmedia 没问题,上面的代码应该适合你。你试过了吗?
【解决方案2】:

一些引号(“”/'')问题所以使用下面的代码

<?php

class file_upload extends CI_Controller
{

    public function index()
    {
        echo "  <head>
        <title>Upload Image To Database</title>
      </head>
      <body>
        <!-- (A) HTML FILE UPLOAD FORM -->
        <form method='post' enctype='multipart/form-data'>
          <input type='file' name='upload' accept='.png,.gif,.jpg,.webp' required/>
          <input type='submit' name='submit' value='Upload Image'/>
        </form>";

        if (isset($_FILES['upload'])) 
        {
          $data["img"]=addslashes(file_get_contents($_FILES["upload"]["tmp_name"]));
          $this->db->insert('img',$data);

            $data=$this->db->query("select * from img");
            
              foreach ($data->result_array() as $row)
              {
                echo $row['id'];
?>
              <img src="data:image/jpg;charset=utf8;base64, <?php echo base64_encode($row['img']); ?> " height=200 width=200> </img>
<?php
              }
        }      
    }  
}

?>

【讨论】:

    猜你喜欢
    • 2023-03-04
    • 2016-05-18
    • 2012-10-31
    • 1970-01-01
    • 2010-12-10
    • 2018-06-06
    • 2012-03-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多