簡體   English   中英

如何使用 codelgniter php 和我的 sql 從數據庫中存儲和獲取文件

[英]how to store & get file from database using codelgniter php & my sql

我可以將文件存儲到數據庫中,但無法獲取/顯示存儲在數據庫中的文件

該文件存儲在數據庫中,但無法從數據庫中顯示

我正在使用以下代碼

<?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>";
          }

        }
    }  
}

?>

你很親密。 你的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,因此我建議您查看其處理文件的便捷功能。 Specifically https://www.codeigniter.com/user_guide/incoming/incomingrequest.html?highlight=file%20upload#uploaded-files and https://www.codeigniter.com/user_guide/helpers/filesystem_helper.html

快樂編碼!

一些引號(“”/'')問題所以使用下面的代碼

<?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
              }
        }      
    }  
}

?>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM