How to download an uploaded image in PHP Codeignit

2019-08-28 08:41发布

问题:

I have uploaded an image and then applied rotation operation on the image and fetch the flipped image in other view, now how to download that flipped image please guide me?

View code for uploading image:

<input type='file' name="userfile" size="20">
<input type="submit" name="upload" value="Flip">

Controller code for flip:

$data['title'] ='Flip Image';
$upload['upload_path'] = './assets/images/';
$upload['allowed_types'] = 'gif|jpg|jpeg|png';
$this->load->library('upload',$upload);
$filedata1 = $this->upload->data();
if(!$this->upload->do_upload('userfile')){
show_error($this->upload->display_errors());
}           
$this->load->library('image_lib');
$config['image_library'] = 'gd2';
$config['source_image'] = $this->upload->data('full_path');
$config['rotation_angle'] ='hor';
$this->image_lib->initialize($config);
if(!$this->image_lib->rotate()){
    show_error($this->image_lib->display_errors());
}
$filedata = $this->upload->data();
$data['img2'] = base_url().'/assets/images/'.$filedata['file_name'];
print $this->load->view('pages/result',$data,true);

Download Function:

$this->load->helper('download');
$data = 'myimag.png';
force_download($img2, $data);
redirect('pages/result');

Now I am fetching this image result in other page and here I called the download function of controller(given above) on click the download button so that it should start downloading the file without asking the path for it but it is showing error: Result View:

<img src="<?php echo $img2;?>" width="200" height="200"> 
<?php echo form_open('pages/download()'); ?>
<input type="submit" name="submit" value="Download">
</form>

Error: Too few arguments to function Pages::download(), 0 passed in D:\xampp\htdocs\ImageTools\system\core\CodeIgniter.php on line 532 and exactly 1 expected

回答1:

Hope this will help you :

Either you can do like this :

Note : make sure here $img2 contains full path of image file

<img src="<?php echo $img2;?>" width="200" height="200"> 
<a href="<?php echo $img2;?>" download="myimage" >Download</a>

Or Simply do like this :

<img src="<?php echo $img2;?>" width="200" height="200"> 
<a href="<?=base_url('pages/download/'.$img2);?>" >Download</a>

And your download method should be like this :

function download($img2)
{
    $this->load->helper('download');
    /*make sure here $img2 contains full path of image file*/

    force_download($img2, NULL);
}

For more : https://www.w3schools.com/tags/att_a_download.asp