Загрузка файла Codeigniter из phpmyadmin становится нечитаемой

Когда я загружаю файл из таблицы базы данных (пользователи), он становится нечитаемым. Файл изображения станет недействительным, а файл PDF не будет загружен. Размер загружаемого файла также станет 1 КБ.

Хотя сначала я успешно загрузил файл в ту же таблицу (пользователи), поэтому файл определенно не 1 КБ.

Таблица (пользователи)

Пример ошибки при открытии pdf файла

Мой контроллер (Files.php)

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Files extends CI_Controller {

function __construct() {
parent::__construct();
$this->load->model('user');
}

public function index(){
$data = array();

//get files from database
$data['files'] = $this->user->getRows();

//load the view
$this->load->view('r_down', $data); //modell->view
}

public function download($id){
if(!empty($id)){
//load download helper
$this->load->helper('download');

//get file info from database
$fileInfo = $this->user->getRows(array('id' => $id));

//file path
$file = 'uploads/files/'.$fileInfo['picture'];
//download file
force_download($file, '$data');//name file nk save
//force_download($file,NULL);//name file nk save
}
}

2

Решение

Ваш download метод должен быть таким:

public function download($id)
{
if(!empty($id))
{
$this->load->helper('download');
$fileInfo = $this->user->getRows(array('id' => $id));
$file = FCPATH.'uploads/files/'.$fileInfo['picture'];
force_download($file, NULL);
}
}

Ваше мнение должно быть таким:

<?php if(!empty($files)){
foreach($files as $frow) { ?>
<div class="file-box">
<div class="box-content">
<h5><?php echo $frow['name']; ?></h5>
<div class="preview">
<embed src="<?=site_url('uploads/images/'.$frow['picture']); ?>">
</div>
<a href="<?=site_url('files/download/'.$frow['id']);?>" class="dwn">Download</a>
</div>
</div>
<?php } } ?>

Для большего : https://www.codeigniter.com/user_guide/helpers/download_helper.html

1

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

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