使用Codeigniter在sql server中存储和检索图像

时间:2013-12-03 08:30:40

标签: php sql-server codeigniter

我想使用Codeigniter 将图像存储在 SQL服务器中;实际上我可以选择图像并将其转换但是当我这样做并将其存储在数据库中然后检索它时图像无法显示。

我在数据库中观察到,使用C#存储的图像的先前名称以0xFFD8F开头,但使用codeigniter,名称以0x3或其他任何内容开头。

这里是控制器

public function addImage() {
    $config['upload_path'] = './uploads/';
    $config['allowed_types'] = 'gif|jpg|png';

    $this->load->library('upload', $config);

    if ( ! $this->upload->do_upload()) {
        $error = array('error' => $this->upload->display_errors());
        $this->load->view('Profile/addImage', $error);
    } else {
        $data = $this->upload->data(); 
        $dataString = file_get_contents($data['full_path']);
        $orig_name = $data['orig_name'];
        $uploadImage = $this->Personalinfo_model->uploadImage(array('orig_name' => $orig_name, 'dataString' => $dataString ));
        delete_files($data['full_path']) ;
    }
}

模型

function uploadImage($options = array()) {
    $orig_name = $options['orig_name']; 
    $dataString = $options['dataString']; 
    // $hex_image = bin2hex($dataString);
    $data = unpack("H*hex", $dataString);
    $object = array(
        'EmployeeID' => '3',
        'filename' => $orig_name,
        'EmployeePic' => "0x".$data['hex']
    );
    $this->db->where('EmployeeID','3');
    $this->db->update('EmployeePic', $object);
}

解压后图像会发生错误,但我无法发现问题。

1 个答案:

答案 0 :(得分:1)

正如我们在聊天方面所讨论的那样,您具有以下功能:

function uploadImage($options = array()) { 
    $orig_name = $options['orig_name']; 
    $dataString = $options['dataString']; 
    $hex_image = bin2hex($dataString); 

    $object = array( 
        'EmployeeID' => '3', 
        'filename' => $orig_name, 
        'EmployeePic' => "0x".$hex_image 
    ); 
    $this->db->where('EmployeeID','3'); 

    $this->db->update('[HumanResource].[dbo].[EmployeePic]', $object); 
}

您正在将0x字符串连接到二进制文件。通过删除它你应该让你的功能正常工作。