Как загрузить картинку в таблицу в б.д. MySQL?
Есть такой код, загрузка картинки в images/upload А необходимо в базу данных, в таблицу users в ячейку avatar
images.php
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Images extends CI_Controller {
private $upload_path = "./uploads";
public function index()
{
$this->load->view("index");
}
public function upload()
{
if ( ! empty($_FILES))
{
$config["upload_path"] = $this->upload_path;
$config["allowed_types"] = "gif|jpg|png";
$this->load->library('upload', $config);
if ( ! $this->upload->do_upload("file")) {
echo "failed to upload file(s)";
}
}
}
public function remove()
{
$file = $this->input->post("file");
if ($file && file_exists($this->upload_path . "/" . $file)) {
unlink($this->upload_path . "/" . $file);
}
}
public function list_files()
{
$this->load->helper("file");
$files = get_filenames($this->upload_path);
// we need name and size for dropzone mockfile
foreach ($files as &$file) {
$file = array(
'name' => $file,
'size' => filesize($this->upload_path . "/" . $file)
);
}
header("Content-type: text/json");
header("Content-type: application/json");
echo json_encode($files);
}
}
<script>
Dropzone.autoDiscover = false;
var myDropzone = new Dropzone("#my-dropzone", {
url: "<?php echo site_url("images/upload") ?>",
acceptedFiles: "image/*",
addRemoveLinks: true,
removedfile: function(file) {
var name = file.name;
$.ajax({
type: "post",
url: "<?php echo site_url("images/remove") ?>",
data: { file: name },
dataType: 'html'
});
// remove the thumbnail
var previewElement;
return (previewElement = file.previewElement) != null ? (previewElement.parentNode.removeChild(file.previewElement)) : (void 0);
},
init: function() {
var me = this;
$.get("<?php echo site_url("images/list_files") ?>", function(data) {
// if any files already in server show all here
if (data.length > 0) {
$.each(data, function(key, value) {
var mockFile = value;
me.emit("addedfile", mockFile);
me.emit("thumbnail", mockFile, "<?php echo base_url(); ?>uploads/" + value.name);
me.emit("complete", mockFile);
});
}
});
}
});
</script>
Ответы (1 шт):
Автор решения: Tropen
→ Ссылка
Можно использовать BLOB поле и заполнять его. Англ. стек с подобным вопросом. Но это неправильный путь.
Лучше если загружаемые файлы хранятся в ../public/uploads/, а в БД хранится к ним путь. Если загрузок много, то лучше хранить иерархично uploads/year/month
В будущем возможно использовать хостинг, который будет хранить картинки не на самом сервере, а в облаке, как это делает AWS S3, например.