image not uploaded to specified folder in codeigniter - codeigniter

I am trying to simply upload a image to a specified folder but cant figure out why is the controller function not working.Here is the controller code
public function do_upload()
{
$config['upload_path'] = './uploads/';
$config['allowed_types'] = 'gif|jpg|png';
$config['max_size'] = '400';
$config['max_width'] = '1024';
$config['max_height'] = '768';
$this->load->library('upload',$config);
if($this->upload->do_upload()){
echo "image uploaded";
}
echo $this->input->post('username');
}
And this is the form to input image file in view folder
<form enctype="multipart/form-data" method="post" action="<?php echo site_url('welcome/do_upload');?>">
username:<input type="text" name="username">
<p>upload file</p>
<input type="file" name="image">
<input type="submit" name="submit" value="submit">
</form>

You just need to pass file input name 'image' in do_upload function, by default its 'userfile'
public function do_upload()
{
$config['upload_path'] = './uploads/';
$config['allowed_types'] = 'gif|jpg|png';
$config['max_size'] = '400';
$config['max_width'] = '1024';
$config['max_height'] = '768';
$this->load->library('upload',$config);
if($this->upload->do_upload('image')){ //passed 'image' file control input name in form
echo "image uploaded";
}
echo $this->input->post('username');
}

Related

upload multiple pictures in codeigniter

HTML Code
<?php echo form_open_multipart('upload/do_upload');?>
<input type="file" name="file1" size="20" />
<input type="file" name="file2" size="20" />
<input type="submit" value="upload" />
</form>
Controller code
public function do_upload()
{
$pic1 = "Name One";
$pic2 = "Name Two";
$RealName = array('file1', 'file2' );
$ChangeName = array($pic1, $pic2 );
$arrlength = count($ChangeName);
for($x = 0; $x < $arrlength; $x++)
{
$config['upload_path'] = './uploads/';
$config['file_name'] = $ChangeName[$x];
$config['allowed_types'] = 'gif|jpg|jpeg|png';
$config['max_size'] = 1909900;
$this->load->library('upload', $config);
$this->upload->do_upload($RealName[$x]);
echo $ChangeName[$x]; echo "<br>";
echo $RealName[$x]; echo "<br>";
}
}
Trying to upload multiple pictures. Code runs correctly but I'm facing some problems in saving all pictures. The problem is saving all pictures with same name (Name One).
try this one out. this code is I am using...
private function upload_files($path, $title, $files)
{
$config = array(
'upload_path' => $path,
'allowed_types' => 'jpg|gif|png',
'overwrite' => 1,
);
$this->load->library('upload', $config);
$images = array();
foreach ($files['name'] as $key => $image) {
$_FILES['images[]']['name']= $files['name'][$key];
$_FILES['images[]']['type']= $files['type'][$key];
$_FILES['images[]']['tmp_name']= $files['tmp_name'][$key];
$_FILES['images[]']['error']= $files['error'][$key];
$_FILES['images[]']['size']= $files['size'][$key];
$fileName = $title .'_'. $image;
$images[] = $fileName;
$config['file_name'] = $fileName;
$this->upload->initialize($config);
if ($this->upload->do_upload('images[]')) {
$this->upload->data();
} else {
return false;
}
}
return $images;
}

How to upload php or html file in codeigniter?

How to upload php or html file in codeigniter using upload library? I have controller which working ok when uploading jpg, gif, png files but it won't to upload files with php or html or sql extension.
Here is my controller
public function ipload()
{
$this->load->helper('url');
$this->load->model('m_company');
$config['upload_path'] = './uploads/';
$config['allowed_types'] = 'php|html|txt';
$config['max_size'] = 2048;
$config['max_width'] = 0;
$config['max_height'] = 0;
$this->load->library('upload', $config);
if (!$this->upload->do_upload('userfile'))
{
$data = array('error' => $this->upload->display_errors());
}
else
{
$this->upload->do_upload('userfile');
$data = array('upload_data' => $this->upload->data());
$filen = $this->upload->data('file_name');
$this->m_company->set_doc($filen);
}
echo json_encode($data);
}
When allowed files are jpg gif png everything works fine
first you setting controler, you can use access to upload file all class using $config['allowed_types'] ='*';
class c_cutipegawai extends CI_Controller{
function __construct(){
parent::__construct();
}
function do_upload(){
$config['upload_path'] ='./upload/SuratCuti/';
$config['allowed_types'] ='*';
$config['max_size'] =1024*8;
$config['max_widht'] =1024*2;
$config['max_height'] =768;
$this->load->library('upload', $config);
if(! $this->upload->do_upload('userfile')){
$error = array('error' => $this->upload->display_errors());
}
else{
$data=array('upload_data' => $this->upload->data());
}
}
}
After setting in controler, now we craete view to insert button upload file
<html>
<head>
<title>Upload Form</title>
</head>
<body>
<?php echo form_open_multipart('C_CutiPegawai/do_upload');?>
<input type="file" name="userfile" size="20" />
<br /><br />
<input type="submit" value="upload" />
</form>
</body>
</html>

how to upload multiple files in one <input>

I have made a code that let me upload multiple files but in separate
I was trying to upload a multiple files in one input where i set my input tag into
<input type="file" multiple="" name="file1">
I selected 3 images but only 1 image was uploaded..
here is my VIEW before changing my input:
<?php echo form_open_multipart('test'); ?>
<p>
<?php echo form_label('File 1: ', 'file1') ?>
<input type='file' name='file1' id='file1'>
</p>
<p>
<?php //echo form_label('File 2: ', 'file2') ?>
<input type='file' name='file2' id='file2'>
</p>
<p><?php echo form_submit('submit', 'Upload them files!') ?></p>
and here is my CONTROLLER
function index()
{
if (isset($_POST['submit']))
{
$this->load->library('upload');
$config['upload_path'] = './upload_documents/';
$config['allowed_types'] = 'jpg|png|gif|jpeg|JPG|PNG|GIF|JPEG';
$config['max_size'] = '0'; // 0 = no file size limit
$config['max_width'] = '0';
$config['max_height'] = '0';
$config['overwrite'] = TRUE;
$this->upload->initialize($config);
foreach($_FILES as $field => $file)
{
// No problems with the file
if($file['error'] == 0)
{
// So lets upload
if ($this->upload->do_upload($field))
{
$data = $this->upload->data();
//alert("nice");
}
else
{
$errors = $this->upload->display_errors();
die();
}
}
else{
echo "alksjdfl";
die();
}
}
}
$this->load->view("test");
}
}
Use this multi file upload library
https://github.com/stvnthomas/CodeIgniter-Multi-Upload/blob/master/MY_Upload.php
// Prepraing upload config & upload files
$config = array();
$config['upload_path'] = 'temp/';
$config['allowed_types'] = 'gif|jpg|png';
$config['max_size'] = '256000';
$this->load->library('upload');
$this->upload->initialize($config);
$this->upload->do_multi_upload("my_file");
$files_upload = $this->upload->get_multi_upload_data();
$err_msg = $this->upload->display_errors();
if (!empty($files_upload) && is_array($files_upload)) {
foreach ($files_upload as $file_data) {
// Your files here :)
}
}
Special thanks to #stvnthomas for the library :)
You should use this library for multi upload in CI
https://github.com/stvnthomas/CodeIgniter-Multi-Upload
Installation
Simply copy the MY_Upload.php file to your applications library directory.
Use: function test_up in controller
public function test_up(){
if($this->input->post('submit')){
$path = './public/test_upload/';
$this->load->library('upload');
$this->upload->initialize(array(
"upload_path"=>$path,
"allowed_types"=>"*"
));
if($this->upload->do_multi_upload("myfile")){
echo '<pre>';
print_r($this->upload->get_multi_upload_data());
echo '</pre>';
}
}else{
$this->load->view('test/upload_view');
}
}
upload_view.php in applications/view/test folder
<form action="" method="post" enctype="multipart/form-data">
<input type="file" name="myfile[]" id="myfile" multiple>
<input type="submit" name="submit" id="submit" value="submit"/>

Uploading multiple file using codeigniter

I got a problem with multiple upload file using codeigniter. I've tried many method before but still no success.
Here is my code.
View
<?php echo form_open_multipart('staff/upload_files', array('id' => 'form_checkbox')); ?>
Inside table:
<tr>
<th width="20%">Select File :</th>
<td>
<input type="file" name="userfile[]" value="" /> <span class="green">[Max File Upload: 2MB]</span><br>
<input type="file" name="userfile[]" value="" /> <span class="green">[Max File Upload: 2MB]</span><br>
<input type="file" name="userfile[]" value="" /> <span class="green">[Max File Upload: 2MB]</span>
</td>
</tr>
Controller
function upload_files() {
$data['studentid'] = $studentid;
if ($this->input->post('submit')) {
$config['upload_path'] = './upload/announcement/collegecode/';
$config['allowed_types'] = 'jpg|png';
$config['max_size'] = '2048';
$config['max_width'] = '0';
$config['max_height'] = '0';
$config['overwrite'] = FALSE;
$this->load->library('upload', $config);
if (!$this->upload->do_upload()) {
$this->session->set_flashdata('msg', 'error: ' . $this->upload->display_errors());
} else {
$this->session->set_flashdata('msg', 'success:Successfully Upload Student Photo');
}
}
$this->template->load('template', 'staff/announcement', $data);
}
I've also tried this method, but no file was uploaded.
$config['upload_path'] = './upload/announcement/collegecode/';
$path=$config['upload_path'];
$config['allowed_types'] = 'gif|jpg|jpeg|png';
$config['max_size'] = '2048';
$config['max_width'] = '1920';
$config['max_height'] = '1280';
$this->load->library('upload');
foreach ($_FILES as $key => $value)
{
if (!empty($key['userfile']))
{
$this->upload->initialize($config);
if (!$this->upload->do_upload($key))
{
$errors = $this->upload->display_errors();
flashMsg($errors);
}
else
{
// Code After Files Upload Success GOES HERE
}
}
}

How can i insert data to mysql database with image name which will be auto upload image without submit and instant display

My code is below
View
<form id="form1" name="form1" method="post" enctype="multipart/form-data" action="<?php echo base_url();?>index.php/setup_con/add_user_info">
Picture <input name="userfile" type="file" />
Name <input name="name" type="text" />
<input name="" type="submit" />
</form>
Controller
$config['upload_path'] = './uploads/';
$config['allowed_types'] = 'gif|jpg|png';
$config['max_size'] = '800';
$config['max_width'] = '184';
$config['max_height'] = '142;
$this->load->library('upload', $config);
if (!$this->upload->do_upload())
{
$error = array('error' => $this->upload->display_errors());
echo $error;
}
else
{
$data = array('upload_data' => $this->upload->data());
$img = $data ['upload_data']['file_name'];
$data = $this->setup_model->add_user_info($img);
}
Model
$name = $this->input->post('name');
$img = $img
$data = array (
'img' =>$img,
'name' =>$name
);
$this->db->insert('user',$data);
Normally i can do it
Basically ,i want to do at first auto image upload without submit(may be via ajax) and
instantly display then i will submit then insert data to user table with image name and name.
Please help me how can i solve this problem
Sorry if I have misread your question, but this sounds like a really long way of asking how to preview an image before upload. Here is a way of doing that before you do any upload, you can then do your actual image upload along with your database stuff all together on submit.
HTML
<img id="preview_img" src="" />
<input id='img_upload' type="file" name="userfile" />
JQUERY
$('body').on("change", "#img_upload", function(event) {
if (this.files && this.files[0]) {
var reader = new FileReader();
reader.onload = function(e) {
$('#preview_img').attr('src', e.target.result);
}
reader.readAsDataURL(this.files[0]);
}
});

Resources