我对如何在数据库CI中上传照片有疑问,之前,我已经完成了搜索上传照片的方式,但没有成功。
这是控制器
tambah_aksi()
{
$this->load->library('upload');
$nmfile = "".time(); //nama file saya beri nama langsung dan diikuti fungsi time
$config['upload_path'] = './assets/barang/uploads/'; //path folder
$config['allowed_types'] = 'gif|jpg|png|jpeg|bmp'; //type yang dapat diakses bisa anda sesuaikan
$config['max_size'] = '3072'; //maksimum besar file 3M
$config['max_width'] = '5000'; //lebar maksimum 5000 px
$config['max_height'] = '5000'; //tinggi maksimu 5000 px
$config['file_name'] = $nmfile; //nama yang terupload nantinya
$this->upload->initialize($config);
if($_FILES['filefoto']['name'])
{
if ($this->upload->do_upload('filefoto'))
{
$gbr = $this->upload->data();
$data = array(
'id_barang' => $this->input->post('id_barang'),
'nama_barang' => $this->input->post('nama_barang'),
'stock_barang' => $this->input->post('stock_barang'),
'harga_barang' => $this->input->post('harga_barang'),
'ukuran_barang' => $this->input->post('ukuran_barang'),
'gambar' => $gbr['file_name']
);
$this->barang_model->tambah_data($data); //akses model untuk menyimpan ke database
//pesan yang muncul jika berhasil diupload pada session flashdata
$this->session->set_flashdata("pesan", "<div class=\"col-md-12\"><div class=\"alert alert-success\" id=\"alert\">Insert data berhasil !!</div></div>");
redirect('barang'); //jika berhasil maka akan ditampilkan view upload
}else{
//pesan yang muncul jika terdapat error dimasukkan pada session flashdata
$this->session->set_flashdata("pesan", "<div class=\"col-md-12\"><div class=\"alert alert-danger\" id=\"alert\">Insert data gagal !!</div></div>");
redirect('barang/tambah'); //jika gagal maka akan ditampilkan form upload
}
}
答案 0 :(得分:0)
你可以使用$ this-&gt; upload-&gt; display_errors()显示错误
答案 1 :(得分:0)
$nmfile = "file".time().".png"; //nama file saya beri nama langsung dan diikuti fungsi time
$config['upload_path'] = '/uploads/'; //path folder
$config['allowed_types'] = 'gif|jpg|png|jpeg|bmp'; //type yang dapat diakses bisa anda sesuaikan
$config['max_size'] = '3072'; //maksimum besar file 3M
$config['max_width'] = '5000'; //lebar maksimum 5000 px
$config['max_height'] = '5000'; //tinggi maksimu 5000 px
$config['file_name'] = $nmfile;
$this->load->library('upload');
if ($this->upload->do_upload())
{
$gbr = $this->upload->data();
echo "<pre>";
print_r($gbr);
echo exit;
然后检查上传目录。
答案 2 :(得分:0)
第一步 - 创建视图
首先设置Codeigniter base_url()
功能,然后转到应用程序&gt;&gt;视图文件夹。在Codeigniter 3的views文件夹中,您可以看到文件 - welcome_message.php ,编辑此文件和创建图像上载表单。您还可以复制并粘贴以下代码以创建图像上传表单。
<html>
<head>
<title>Upload Image Form</title>
</head>
<body>
<?php echo form_open_multipart('Welcome/image_upload/' , array('id' => 'img'));?>
<h3>Image Upload Form</h3>
<input type="file" name="pic" tabindex="2" required>
<input type="text" name="alt" placeholder="Image Alt Text" tabindex="1" required>
<button type="submit" id="img-submit" data-submit="Sending">Submit</button>
</form>
</body>
</html>
您还可以添加一些CSS代码来设计表单。
第二步 - 创建数据库和图像上传文件夹 现在在项目中创建一个文件夹,在其中上传图像并在phpmyadmin的项目数据库中创建一个表 - “image_upload”,你也可以复制并粘贴下面的代码来创建一个表:
CREATE TABLE `image_upload` (
`image_url` VARCHAR( 50 ) NOT NULL ,
`alt` VARCHAR( 50 ) NOT NULL
) ENGINE = MYISAM ;
第三步 - 控制器: 现在转到应用程序&gt;&gt; Controller,会有一个名为'Welcome.php'的PHP文件。首先,您需要添加表单和URL帮助程序并加载数据库,如下所示:
public function __construct()
{
parent::__construct();
$this->load->database();
$this->load->helper('url');
$this->load->helper('form');
}
现在在控制器中创建一个图像上传功能,如下所示:
function do_upload()
{
$url = "../images";
$image=basename($_FILES['pic']['name']);
$image=str_replace(' ','|',$image);
$type = explode(".",$image);
$type = $type[count($type)-1];
if (in_array($type,array('jpg','jpeg','png','gif')))
{
$tmppath="images/".uniqid(rand()).".".$type; // uniqid(rand()) function generates unique random number.
if(is_uploaded_file($_FILES["pic"]["tmp_name"]))
{
move_uploaded_file($_FILES['pic']['tmp_name'],$tmppath);
return $tmppath; // returns the url of uploaded image.
}
}
else
{
redirect(base_url() . 'index.php/Welcome/not_img', 'refresh');// redirect to show file type not support message
}
}
函数do_upload
正在将所选图片从 welcome_message.php 的形式上传到您在Step-II中创建的文件夹中并返回图片网址。
现在我们将上传图像的URL保存到MySQL数据库中。参见下面的代码:
function image_upload()
{
$data ['image_url']= $this->do_upload();
$data ['alt']= $this->input->post('alt');
$this->db->insert('image_upload', $data);
redirect(base_url() . 'index.php/Welcome/', 'refresh');// Redirect to Success page
}
函数image_upload
会将图片网址保存在您的数据库中。您可以使用以下代码查看上传的图片:
<?php
$images = $this->db->get('image_upload')->result_array();
foreach($images as $row):
?>
<img src="<?php echo base_url().$row['image_url'];?>" class="img" alt="" />
<?
endforeach;
?>
所以这些是使用Codeigniter 3上传图像并保存在MySQL数据库中的简单步骤。
答案 3 :(得分:0)
使用$ this-&gt; upload-&gt; display_errors()
答案 4 :(得分:0)
首先在views目录中创建一个视图并添加一个表单。
查看文件
<!DOCTYPE html>
<html>
<head>
<title>Codeigniter Upload Example</title>
</head>
<body>
<?php echo $error; ?>
<h3>Upload Example</h3>
<?php echo form_open_multipart('upload/upload_file'); ?>
<input type="file" name="userfile" size="20" />
<br /><br />
<input type="submit" value="upload" />
</form>
</body>
创建文件夹以存储上传的文件,例如(照片)
下一步创建一个控制器,如下所示:
上传控制器
class Upload extends CI_Controller {
public function __construct()
{
parent::__construct();
$this->load->helper(array('form', 'url'));
$this->load->library('form_validation');
}
public function index()
{
$this->load->view('upload', array('error' => ' ' ));
}
public function upload_file()
{
$config['upload_path'] = './photos/';
$config['allowed_types'] = 'gif|jpg|png|pdf|doc';
$config['max_size'] = 100;
$config['max_width'] = 1024;
$config['max_height'] = 768;
$this->load->library('upload', $config);
if ( ! $this->upload->do_upload('userfile'))
{
$this->form_validation->set_error_delimiters('<p class="error">', '</p>');
$error = array('error' => $this->upload->display_errors());
$this->load->view('upload', $error);
}
else
{
$data = array('upload_data' => $this->upload->data());
$this->load->view('someview', $data);
}
}
}
查看上传的文件信息。
将图像上传到某个目录后,您可以创建另一个视图文件并分配上传的数据,并可以使用文件信息。
<?php foreach ($upload_data as $item => $value): ?>
<p><?php echo $item;?>: <?php echo $value;?></p>
<?php endforeach; ?>
上传的文件
<img src="<?php echo base_url().'/uploads/'.$upload_data['file_name']; ?>" />
保存到数据库
您可以使用上面的图像信息并传递,图像名称,路径和相关信息进行查询
希望此代码可以帮助您。您可以在此处找到有关如何使用codeigniter上传文件的详细教程。 Codeigniter file upload example