конвертировать BLOB в файл, а затем загрузить его

Как скачать файл из базы данных с типом 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

0

Решение

Я думаю, вам не нужно снова сохранять блоб в файл перед загрузкой. Попробуйте это без использования помощника по загрузке 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;
}
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]