Как скачать файл из базы данных с типом blob. Я уже сохраняю файл из изображения в blob. Но я не знаю, чтобы снова войти в образ.
Я уже создал функцию загрузки, но не работает ..
вставить функцию
public funtion upload(){
$name = $_FILES['file']['name'];
$size = $_FILES['file']['size'];
$type = $_FILES['file']['type'];
$from = $_FILES['file']['tmp_name'];
//need to get the content of the file
$fp = fopen($from, 'r');
$file_content = fread($fp, filesize($from));
$file_content = bin2hex($file_content);
fclose($fp);
$insertFile = "insert into tb_file (name,content,type,size) VALUES ('$name','$file_content','$type','$size')";
}
функция загрузки
public function download(){
$this->load->helper('download');
$id_file = $this->uri->segment(3);
$path = base_url()."images/tmp";$this->load->database();
$show = "select * from tb_file where id_file = ".$id_file.";
$row = $this->db->query($show)->row();
$image = $row->content;
$name = $row->name;
$type = $row->type;
$size = $row->size;
$data = file_put_contents($path."/".$name, base64_decode($image));
header($type);
force_download($name, $data);
}
Что мне не хватает в моем коде? Это скачать, но не имеют размера
Замечания: используя рамки codeigniter
Я думаю, вам не нужно снова сохранять блоб в файл перед загрузкой. Попробуйте это без использования помощника по загрузке codeigniter:
public function download(){
$id_file = $this->uri->segment(3);
$this->load->database();
$show = "select * from chat,tb_user,tb_file where chat.id_user = tb_user.id_user and chat.id_file = tb_file.id_file and tb_file.id_file = ".$id_file." order by waktu desc ";
$row = $this->db->query($show)->row();
$image = $row->content;
$name = $row->name;
$type = $row->type;
$size = $row->size;
header('Content-length: ' . $size);
header('Content-type: ' . $type);
header('Content-Disposition: attachment; filename=' . $name);
ob_clean();
flush();
echo hex2bin($image); // or base64 decode
exit;
}
Других решений пока нет …