web-dev-qa-db-fra.com

Comment télécharger une image dans CodeIgniter?

En vue

 <?php echo form_open_multipart('welcome/do_upload');?>
 <input type="file" name="userfile" size="20" />

Dans le contrôleur

function do_upload()
{
    $config['upload_path'] = './uploads/';
    $config['allowed_types'] = 'gif|jpg|png';
    $config['max_size'] = '100';
    $config['max_width']  = '1024';
    $config['max_height']  = '768';
    $config['overwrite'] = TRUE;
    $config['encrypt_name'] = FALSE;
    $config['remove_spaces'] = TRUE;
    if ( ! is_dir($config['upload_path']) ) die("THE UPLOAD DIRECTORY DOES NOT EXIST");
    $this->load->library('upload', $config);
    if ( ! $this->upload->do_upload('userfile')) {
        echo 'error';
    } else {

        return array('upload_data' => $this->upload->data());
    }
}

Et j'appelle cette fonction comme ça

 $this->data['data'] = $this->do_upload();

et voir cette image:

<ul>
<?php foreach ($data['upload_data'] as $item => $value):?>
<li><?php echo $item;?>: <?php echo $value;?></li>
<?php endforeach; ?>
</ul>

Je ne sais pas quelle est l'erreur.

15
darshan

Il semble que le problème est que vous envoyez la demande de formulaire à welcome/do_upload et appelez la méthode Welcome::do_upload() dans une autre par $this->do_upload().

Par conséquent, lorsque vous appelez la $this->do_upload(); dans votre méthode second, le tableau $_FILES serait empty.

Et c’est pourquoi var_dump($data['upload_data']); renvoie NULL.

Si vous souhaitez télécharger le fichier à partir de welcome/second_method, envoyez la demande de formulaire à welcome/second_method où vous appelez $this->do_upload();.

Puis changez la fonction d’assistant de formulaire (dans le View) comme suit1:

// Change the 'second_method' to your method name
echo form_open_multipart('welcome/second_method');

Téléchargement de fichier avec CodeIgniter

CodeIgniter a très bien documenté le processus de téléchargement à l'aide de la bibliothèque de téléchargement de fichiers. 

Vous pouvez consulter l'exemple de code dans le guide de l'utilisateur. Et aussi, afin de mieux comprendre la mise en ligne des configurations, consultez la section Explication des éléments de configuration à la fin de la page de manuel.

De plus, il y a quelques articles/exemples sur le téléchargement de fichier dans CodeIgniter, vous pouvez envisager:

Juste comme un side-note: Assurez-vous que vous avez chargé les fonctions d'assistance url et form avant d'utiliser le code exemple CodeIgniter:

// Load the helper files within the Controller
$this->load->helper('form');
$this->load->helper('url');

1. Le formulaire doit être de type "multipart" pour le téléchargement de fichier. Par conséquent, vous devriez utiliser la fonction d'assistance form_open_multipart() qui renvoie:
<form method="post" action="controller/method" enctype="multipart/form-data" />

15
Hashem Qolami

Simple Image Upload dans codeigniter 

Trouvez le code ci-dessous pour un téléchargement facile des images

 

public function doupload()
     {
        $upload_path="https://localhost/project/profile"  
        $uid='10'; //creare seperate folder for each user 
        $upPath=upload_path."/".$uid;
        if(!file_exists($upPath)) 
        {
                   mkdir($upPath, 0777, true);
        }
        $config = array(
        'upload_path' => $upPath,
        'allowed_types' => "gif|jpg|png|jpeg",
        'overwrite' => TRUE,
        'max_size' => "2048000", 
        'max_height' => "768",
        'max_width' => "1024"
        );
        $this->load->library('upload', $config);
        if(!$this->upload->do_upload('userpic'))
        { 
            $data['imageError'] =  $this->upload->display_errors();

        }
        else
        {
            $imageDetailArray = $this->upload->data();
            $image =  $imageDetailArray['file_name'];
        }

     }

J'espère que cela vous aide à télécharger l'image 

cliquez pour en savoir plus

8
Hiren Makwana

Changer le code comme ça. Cela fonctionne parfaitement:

public function uploadImageFile() //gallery insert
{ 
    if($_SERVER['REQUEST_METHOD'] == 'POST') {
    $new_image_name = time() . str_replace(str_split(' ()\\/,:*?"<>|'), '', 
    $_FILES['image_file']['name']);
    $config['upload_path'] = 'uploads/gallery/'; 
    $config['allowed_types'] = 'gif|jpg|png|bmp|jpeg';
    $config['file_name'] = $new_image_name;
    $config['max_size']  = '0';
    $config['max_width']  = '0';
    $config['max_height']  = '0';
    $config['$min_width'] = '0';
    $config['min_height'] = '0';
    $this->load->library('upload', $config);
    $upload = $this->upload->do_upload('image_file');
    $title=$this->input->post('title');
    $value=array('title'=>$title,'image_name'=>
    $new_image_name,'crop_name'=>$crop_image_name);}
0
shyam prasad

Le téléchargement de fichiers est un processus essentiel dans de nombreuses applications Web. Presque tous les sites Web et applications Web nécessitent un composant intégré de téléchargement de fichier. Le téléchargement de fichiers et d'images dans l'application basée sur CodeIgniter est un composant simple qui prend en charge le processus de téléchargement avec peu de problèmes.

Créer le contrôleur

L'étape suivante est la création d'un fichier dans le dossier du contrôleur. Nommez le fichier upload_controller.php. Dans ce fichier, je chargerai une bibliothèque pour initialiser la classe de téléchargement à l'aide du code suivant:

$this->load->library('upload');

Je vais également définir les préférences pour le processus de téléchargement de fichier via la fonction de contrôleur do_upload(). cette fonction contiendra le code suivant:

$config['upload_path'] = './uploads/';
$config['allowed_types'] = 'gif|jpg|png';
$config['max_size'] = '100';
$config['max_width'] = '1024';
$config['max_height'] = '768';

Pour plus de détails, jetez un coup d'oeil https://www.cloudways.com/blog/codeigniter-upload-file-image/

0
Owais Alam
$image_folder = APPPATH . "../images/owner_profile/" . $_POST ['mob_no'] [0] . $na;
            if (isset ( $_FILES ['image'] ) && $_FILES ['image'] ['error'] == 0) {
                list ( $a, $b ) = explode ( '.', $_FILES ['image'] ['name'] );
                $b = end ( explode ( '.', $_FILES ['image'] ['name'] ) );
                $up = move_uploaded_file ( $_FILES ['image'] ['tmp_name'], $image_folder . "." . $b );
                $path = ($_POST ['mob_no'] [0] . $na . "." . $b);
0
Amol Jadhav
//this is the code you have to use in you controller 

        $config['upload_path'] = './uploads/';  

// directory (http://localhost/codeigniter/index.php/your directory)

        $config['allowed_types'] = 'gif|jpg|png|jpeg';  
//Image type  

        $config['max_size'] = 0;    

 // I have chosen max size no limit 
        $new_name = time() . '-' . $_FILES["txt_file"]['name']; 

//Added time function in image name for no duplicate image 

        $config['file_name'] = $new_name;

//Stored the new name into $config['file_name']

        $this->load->library('upload', $config);

        if (!$this->upload->do_upload() && !empty($_FILES['txt_file']['name'])) {
            $error = array('error' => $this->upload->display_errors());
            $this->load->view('production/create_images', $error);
        } else {
            $upload_data = $this->upload->data();   
        }
0
madhu kant tiwari