Я прочитал множество статей о stackoverflow и google, касающихся загрузки файлов и отображения непосредственно в / из столбца BLOB MYSQL.Мне не нужно загружать файл куда-либо, потому что в моем полном проекте задействован только один файл - это файл логотипа, который должен обновлять пользователь.Хотя я хотел сделать это с библиотекой Codeigniter Upload, но я не смог завершить код, поэтому я пробовал простое PHP-решение, но оно тоже не сработало.
Ниже приведен мой код.
Код для формы загрузки:
<?php echo form_open_multipart('UpdateCompanyInfo'); ?>
<div class="form-group">
<label>Logo</label>
<input type="file" class="form-control" name="logo">
[200 px (width)x200px (height)]
</div>
<div class="box-footer">
<button type="submit" class="btn btn-primary">Update Logo</button>
</div>
<?php echo form_close(); ?>
Код для загрузки:
$check = getimagesize($_FILES["logo"]["tmp_name"]);
if($check !== false)
{
if($check[0]=="200" && $check[1]=="200" )
{
$image = $_FILES['logo']['tmp_name'];
$imageFileType = strtolower(pathinfo($_FILES['logo']['name'],PATHINFO_EXTENSION));
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg") {
return '<div class="alert alert-danger">'.$imageFileType.' Logo file of only jpg/png/jpeg type is acceptable.</div>';
}
$imgContent = addslashes(file_get_contents($image));
if($this->db->update("company", array('logo'=>$imgContent)))
{
return '<div class="alert alert-success">Logo has been updated successfully.</div>';
}
else
{
return '<div class="alert alert-danger">Error 101. Failed to update the logo.</div>';
}
}
else
return '<div class="alert alert-danger">Logo file of only 200px X 200px is acceptable.</div>';
}
Код для отображения изображения в представлении
echo '<img src="data:image/png;base64,'.base64_encode($companyinfo[0]->logo).'"/>';
Я загрузил png-файл, поэтому использовал данные: image / png
При проверке видимого элемента изображения я получаю следующий вывод:
<img src="data:image/png;base64,iVBORw0KGgpcMFwwXDAN ....... v6/IDhCwtLWDE56vdo6CwCC07dMeva1dhgIGnEBikg7xODG0Pq+m61z8bC4Vqpzxpq6d8BhQK7Q1+rte/oyhK61mIAoGRznxWpiYmb8jaleunKEotrSaXy1Xb1lnxXhXvSAGgKtXBetZJOQEAIQkBAQAhCQEAIQkBACEJA8P7xP2GoiDrA7B2BXDBcMFwwXDBJRU5ErkJggg==">
Все статьи через Интернет показывают это решение, но почему оно не работает на моем конце?