Maison >développement back-end >tutoriel php >Comment résoudre l'erreur « Vous n'avez pas sélectionné de fichier à télécharger » lors du téléchargement de plusieurs fichiers dans CodeIgniter ?

Comment résoudre l'erreur « Vous n'avez pas sélectionné de fichier à télécharger » lors du téléchargement de plusieurs fichiers dans CodeIgniter ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-28 20:13:11417parcourir

How to Solve

Téléchargement de plusieurs fichiers dans CodeIgniter

Problème :

Le téléchargement de plusieurs fichiers à l'aide d'un seul élément de formulaire entraîne l'erreur " Vous n'avez pas sélectionné de fichier à upload."

Solution :

Le problème réside dans l'initialisation de la bibliothèque de téléchargement CodeIgniter. Lors de l'utilisation de l'attribut multiple dans le champ de saisie, il est nécessaire d'ajuster l'initialisation de la bibliothèque pour gérer plusieurs fichiers.

Méthode de téléchargement modifiée :

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;
}

Explication :

  • Initialisation : La bibliothèque de téléchargement est initialisé et configuré pour gérer plusieurs fichiers en définissant plusieurs index dans $_FILES (c'est-à-dire images[]).
  • Gestion en plusieurs parties : L'attribut multiple sur le champ de saisie nécessite que le serveur gère plusieurs téléchargements de fichiers. L'initialisation ajoute le suffixe [] au nom d'entrée, permettant la publication de plusieurs fichiers.
  • Données du fichier : La boucle foreach traite chaque fichier séparément, initialisant $_FILES avec les données correspondantes et en définissant le nom du fichier comme titre concaténé avec le nom du fichier.
  • Processus de téléchargement : Chaque fichier est téléchargé en utilisant do_upload('images[]'), et les téléchargements réussis sont ajoutés au tableau $images.

En apportant ces modifications, vous pourrez télécharger plusieurs fichiers avec succès en utilisant l'attribut multiple de votre formulaire .

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn