2012-03-16 62 views
3

我正在使用codeIgniter将文件上载到服务器中的文件夹中。现在我还想将数据保存到数据库中,为了获取原始数据然后将其保存到数据库中,我需要什么?代码点火器 - 如何将图像保存到数据库中

这里有保存文件的模型:

<?php 
class files extends ci_Model{ 
    function saves($filename, $filedata, $post_id){ 
     $this->db->query("INSERT INTO tbl_files SET file_data='$filedata', filename='$filename', postid='$post_id'"); 
    } 
} 
?> 

以下是我把它从上传控制器:

$filename = $data['upload_data']['file_name']; 
$file_data = file_get_contents($data['upload_data']['file_name']); 

$this->load->model('files'); 
$this->files->saves($filename, $file_data, 'ID1'); 

表结构:

  • file_data(LONG BLOB)
  • 文件名(VARCHAR)
+2

你为什么不只是保存路径的形象,而不是图像本身?表现会更好。看看http://stackoverflow.com/questions/3748/storing-images-in-db-yea-or-nay – Rooneyl 2012-03-16 12:49:11

+0

他们说,当你把它存储在数据库中时它更安全,而且它也是可移植的,你不会有当您从一个操作系统更改为另一个操作系统时,担心文件系统结构 – 2012-03-16 12:54:43

+0

我不会因为在将其保存到数据库时发生错误,所以我不会这么做。为了提高安全性,您可以将图像保存在htdocs文件夹的上方 – Rooneyl 2012-03-16 13:31:08

回答

-1

我已经使用手动mysql_real_escape_string()这样的解决了这个问题:

$filename = $data['upload_data']['file_name']; 
$file_data = mysql_real_escape_string(file_get_contents($data['upload_data']['full_path'])); 
1

试试,它的工作我code`

function _save($id = null){ 

    $config['upload_path'] = './asset/'; 
    $config['allowed_types'] = 'gif|jpg|png|jpeg'; 
    $config['max_size'] = '1000'; 
    $config['max_width'] = '1024'; 
    $config['max_height'] = '768'; 
    $config['encrypt_name'] = TRUE; 
    $this->load->library('upload', $config);  

     if($_POST || $_FILES){ 
      if(!$this->upload->do_upload('field_input_name')){ 
       echo $this->upload->display_errors('<p>', '</p>'); 
      } else { 
       $w = $this->upload->data(); 
       $data = array(
        'field_input_name' => $w['file_name'], 
        ); 
       $this->db->insert('table_image', $data); 
      } 
     } 

}