Что я хочу сделать, это загрузить изображение в мою базу данных sql, используя HTML-форму, а затем извлечь его из базы данных, чтобы отобразить его. Я покажу вам некоторый код, чтобы вы могли понять, что я пытаюсь сделать.
1-е РЕДАКТИРОВАНИЕ: Просто связать изображение, чтобы показать таблицу базы данных, в которую я загружаю изображение. Тип строки blob -> https://imgur.com/a/KBlNWWN. В приведенном ниже коде я отредактировал остальные строки таблицы БД, но код для них на самом деле есть.
Это форма загрузки изображения:
<form method="POST" action="/~gd339/ci/index.php/Add/postEvent/<?php echo $societyId ?>" enctype="multipart/form-data">
Event image: <input type="file" name="image"/> <br>
<input type="submit" name="POST" value="Post Event!" class = "unique"/>
Он отправляет данные на контроллер postEvent
:
public function postEvent($society_id) {
$this->load->model('Events_model');
$image = file_get_contents($_FILES['image']['tmp_name']);
$this->Events_model->addEvent($image);
}
Обратите внимание, что для получения изображения из формы я использую $image = file_get_contents($_FILES['image']['tmp_name']);
данные, полученные с помощью записи, затем отправляются на addEvent
в моей модели:
public function addEvent ($image) {
$image1 = $this->db->escape($image);
$sql = "INSERT INTO events (event_image) VALUES ($image1)";
$query = $this->db->query($sql);
}
Для извлечения изображения я использую тег изображения с src
, который вызывает функцию в контроллере:
<img src="http://dragon.maple.as.re/~gd339/ci/index.php/add/getEventImage/<?php echo $row['event_id'] ?>">
public function getEventImage($event_id){
$this->load->model('Societies_model');
$image = $this->Societies_model->getEventImage($event_id);
header("Content-type: image/jpeg");
print($image);
}
код для getEventImage
:
public function getEventImage($event_id) {
$data = '';
$sql = "SELECT event_image FROM events WHERE event_id = $event_id";
$query = $this->db->query($sql);
if ($query->num_rows()) {
$data = $query->row_array();
$data = $data['MA_PHOTO'];
$query->free_result();
}
return $data;
}
В результате изображение просто не отображается. Я читал другие примеры здесь на stackoverflow, и все они, кроме 1, используют библиотеку загрузки CI, чтобы делать то, что я пытаюсь сделать. Является ли библиотека единственным способом получения изображений с помощью CI или в моем коде что-то не так, что изображения не отображаются при вызове?
Большое спасибо тому, у кого хватит терпения просмотреть мой код. Я знаю, что это много, но я впервые использую CI, поэтому я все еще учусь.