如何将文件图像存储到 mysql (Codeigniter)
Posted
技术标签:
【中文标题】如何将文件图像存储到 mysql (Codeigniter)【英文标题】:How to store file images into mysql (Codeigniter) 【发布时间】:2017-06-19 07:43:47 【问题描述】:我尝试使用 Codeigniter 将文件图像上传到 mysql
这可能是我的上传视图:
<label>Upload File</label>
<input type="file" class="form-control" name="images">
</div>
我已经完成了图像名称、描述等。
我尝试将它保存到数据库中,就像普通的输入表单一样。
结果,“图像”列不能为空。我用 varbinary(3000) 设置了“图像”列
我做错了吗?
已编辑:
我的控制器:
public function save()
$this->gallery_model->save_foto();
$this->session->set_flashdata('msg','FOTO BERHASIL DI UPLOAD');
redirect(base_url('gallery'));
我的模特
<?php
class Gallery_model extends CI_Model
public function __construct()
parent::__construct();
public function save_foto()
$data['id'] = date('U');
$data['nm_foto'] = $this->input->post('nm_foto');
$data['username'] = $this->input->post('username');
$data['tanggal'] = date('j F Y');
$data['images'] = $this->input->post('images');
$data['deskripsi'] = $this->input->post('deskripsi');
$this->db->insert( 'gallery', $data );
【问题讨论】:
将图像保存到数据库中不是一个好主意..尝试将图像上传到服务器上,然后将文件路径保存到数据库中 能否请您也分享一下您的控制器和型号代码? 图片上传就像其他文件上传一样。你唯一能做的就是将允许的扩展名设置为.jpeg、.jpg、.png等并将路径保存在数据库中 您不会将输入类型文件的数据获取到 post 方法中 我无法使用 Codeigniter 方式进行上传。总是遇到上传路径错误的事情。所以我尝试了这个。我可以用我的教师代码将它保存到我的文件夹中,但你知道,我试图制作一个艺术网站,所以我认为它需要数据库? 【参考方案1】:不能直接上传图片到数据库,插入图片路径
对于上传图片表单表单添加
enctype="multipart/form-data"
形式。
有关在 codeigniter 中上传图片的更多帮助
Codeigniter Image Upload
【讨论】:
【参考方案2】:您可以存储图像,但不建议这样做。
“正确”的做法是将文件存储在服务器上的某个位置,并将 URI 存储在数据库中。
问题是图像可能非常大,这可能会导致数据库负载过大,这是不必要的。当您处理较大规模的项目时,您可能需要同步多个数据库,当您的数据库较大时,您需要不必要地降低网络速度。
如果您仍希望将图像存储在数据库中,可以将其存储为BLOB
类型。见MySQL documenation
然后您可以使用以下示例代码插入它
$data['image'] = file_get_contents($_FILES['image']['tmp_name']);
【讨论】:
【参考方案3】:如果有人像我一样遇到错误并感到疲倦,这是您可以将 [图片] 上传到资产文件夹的简单方法和代码
在控制器中
public function upd_gallery()
$file = $this->input->post('img_name').".jpg";
move_uploaded_file($_FILES['images']['tmp_name'], './wheretosave/etc/etc'.$file);
redirect( base_url().'gallery');
设置应用程序->配置->路由
$route['gallery/upload2'] = 'gallery/upd_gallery';
把它放在你的视野中
<?php
$ff = './where-to-save/etc/'.$this->input->post('img_name').'.jpg';
?>
<form action="<?= base_url()?>gallery/upload2" method="post" enctype="multipart/form-data">
<div class="form-group">
<input type="text" class="form-control" name="img_name" required="required">
</div>
<div class="form-group">
<input type="file" class="form-control" name="images">
</div>
<div class="form-group">
<button type="submit" class="btn btn-common" value="Update"> Upload</button>
</div>
</div>
</div>
当然,这种方式非常简单。你只需要命名你的图像并保存它
【讨论】:
【参考方案4】:在数据库中保存图像不是好的做法。您可以使用以下代码将文件存储在服务器的文件系统上。
$userfile= $this->input->post('userfile'); //gets image name only
if ($_FILES['userfile']['name'] != '') //to check if you've selected any file
$path = './path/to/folder';
$config['overwrite'] = FALSE;
$config['encrypt_name'] = FALSE;
$config['remove_spaces'] = TRUE;
$config['upload_path'] = $path;
$config['allowed_types'] = 'jpg|png|gif|jpeg';
$config['max_size'] = '0';
if (!is_dir($config['upload_path']))
die("THE UPLOAD DIRECTORY DOES NOT EXIST");
$this->load->library('upload', $config);
if (!$this->upload->do_upload('userfile'))
return "UPLOAD ERROR ! " . $this->upload->display_errors();
else
$filepath = $this->upload->data();
$doc_path = $filepath['file_name'];
return $doc_path;
【讨论】:
以上是关于如何将文件图像存储到 mysql (Codeigniter)的主要内容,如果未能解决你的问题,请参考以下文章
考虑到我的图像的链接存储在 MySQL 数据库中,如何通过 php 显示存储在文件夹中的图像
如何使用 JavaScript 和 Node.js 将捕获的图像存储到 MySQL 数据库中
如何在 iOS 中使用 PHP MySql 将图像存储在数据库中