0
votes

Le téléchargement d'image ne fonctionne pas dans Codeigniter

J'ai du mal à télécharger l'image sur mon serveur local.

Je viens de commencer à apprendre Codeigniter en référençant https://www.phptpoint.com/ Codeigniter-upload-file-image / et documentation Codeigniter.

J'ai suivi chaque étape, mais lorsque je clique sur le bouton de téléchargement, je ne peux pas ouvrir la page. safari dit l'erreur "Impossible d'ouvrir la page".

Il devrait y avoir une erreur que j'ai faite dans le code.

Est-ce que quelqu'un le trouve, s'il vous plaît?

PS: J'ai même eu une erreur en ne joignant pas l'image. peut-être que l'erreur ne concerne pas le téléchargement de l'image?

<!DOCTYPE html>
<html>
<head>
    <title>Upload Image in Codeigniter</title>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
    // I'm not sure but referenced website used "@" right before $error so I kept using. when omitted it I got errors
    <?php echo @$error; ?> 
    <?php echo form_open_multipart('imageupload_controller/upload');?>
    <?php echo "<input type='file' name='profile_pic' size='20' />"; ?>
    <?php echo "<input type='submit' name='submit' value='upload' /> ";?>
    <?php echo "</form>";?>
</body>
</html>
<?php 
class ImageUpload_Controller extends CI_Controller
{
    public function __construct()
    {
    parent::__construct();
    //load Helper for Form
    $this->load->helper('url'); 
    $this->load->helper('form');
    $this->load->library('form_validation');
    }

    public function index()
    {
        $this->load->view('imageupload_form');
    }

    public function upload() 
    {
        $new_name = date('ymd') . time();
        $config['upload_path'] = './uploads/';
        $config['allowed_types'] = 'gif|jpg|png';
        $config['max_size'] = '2000';
        $config['max_width'] = '1500';
        $config['max_height'] = '1500';
        $config['file_name']  = $new_name;
        $this->load->library('upload', $config);

        if (! $this->upload->do_upload('profile_pic')) 
        {
            $error = array('error' => $this->upload->display_errors());

            $this->load->view('imageupload_form', $error);
        } 
        else 
        {
            $data = array('upload_data' => $this->upload->data());

            $this->load->view('imageupload_success', $data);
        }
    }

}
?>


2 commentaires

où définissez-vous $ path ?


Dois-je définir $ path dans mon code?


3 Réponses :


0
votes

J'ai mis à jour quelques lignes de votre code. Veuillez exécuter une commande donnée ci-dessous pour créer votre répertoire avec une autorisation en écriture.

sudo chown www-data:www-data /var/www/[new directory]

Ajouter un nom de variable $ path = '/ var / www / html / ur_project_directory / uploads; sur la première ligne après le démarrage de la fonction. Et changez ur_project_directory avec le nom de votre répertoire.


4 commentaires

Merci pour la réponse et la modification. Bien que j'ai changé l'autorisation de fichier, cela ne fonctionne toujours pas correctement.


veuillez ajouter des modifications à votre réponse, au lieu de modifier la question


indique-t-il une erreur dans votre vue? J'ai récemment modifié votre code, veuillez le vérifier à nouveau avec le code mis à jour.


D'accord, je m'en souviendrai. @LawrenceCherone



0
votes

Supprimez ces lignes

if (!file_exists($path)) {
    mkdir($path, 0755, true);
}

Je n'en vois aucun cas d'utilisation.


0 commentaires

0
votes

Voici votre code de travail après le test.

Voici le fichier de vue.

<?php 
defined('BASEPATH') OR exit('No direct script access allowed');

class Test extends MX_Controller {
    function __construct()
    {
        parent::__construct();
        //load Helper for Form
        $this->load->helper('url'); 
        $this->load->helper('form');
        $this->load->library('form_validation');
    }

    public function index()
    {

        $this->load->view('test-view');
    }

    public function upload() 
    {
        $new_name = date('ymd') . time();
        $config['upload_path'] = './uploads/';
        $config['allowed_types'] = 'gif|jpg|png';
        $config['max_size'] = '2000';
        $config['max_width'] = '1500';
        $config['max_height'] = '1500';
        $config['file_name']  = $new_name;
        $this->load->library('upload', $config);

        if (! $this->upload->do_upload('profile_pic')) 
        {
            $data = $this->upload->display_errors();
            
            $this->session->set_flashdata('status', $data);
            $this->load->view('test-view', $data);
        } 
        else 
        {
            $data = 'Your file uploaded sucessfully.';
            $this->session->set_flashdata('status', $data);
            $this->load->view('test-view', $data);
        }
    }

}
?>

Voici votre fichier de contrôleur

<!DOCTYPE html>
<html>
<head>
    <title>Upload Image in Codeigniter</title>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
    <?php echo @$error; ?> 
    <?php echo form_open_multipart('test/upload');?>
    <?php echo "<input type='file' name='profile_pic' size='20' />"; ?>
    <?php echo "<input type='submit' name='submit' value='upload' /> ";?>
    <?php echo "</form>";?>


    <?php if ($this->session->flashdata('status')) { ?>

    	<label><?php  echo $this->session->flashdata('status'); ?></label>

    <?php } ?>
</body>
</html>


0 commentaires