在 Codeigniter 中上传 pdf

Upload a pdf in Codeigniter

我想从表单上传文件。它适用于 .doc 文件,但 .pdf 文件并非始终有效。我无法加载名为 compositionFinale.pdf (3.67 MB)

的 pdf

我尝试使用另一个比我的 $_FILES["size"] 还大的 pdf,但我有一个错误告诉我:"Ce fichier est trop volumineux"(文件太大)。

但是 compositionFinale.pdf 也太大了,它没有通过我的 if ($_FILES["offre"]["size"] > 500000)(我放了一个回声来测试)。最后我没有错误,它告诉我文件已上传,但当我签入文件时却没有。

编辑:我试图将此 pdf 保存为缩小尺寸的 pdf,当我上传我的文件时,它告诉我我的文件太大。这很好。 可是为什么没有缩小尺寸却不告诉我太大了? 有人看到我没有看到的东西吗?

我的控制器

function publierOffreEmploi()
  { 
    // validation    
      $this->form_validation->set_rules('poste', 'Poste', 'required|max_length[255]');      
      $this->form_validation->set_rules('ville', 'Ville', 'required|max_length[50]');     
      $this->form_validation->set_rules('description', 'Description', 'required');
      $this->form_validation->set_rules('secteurs[]', "Secteur(s) d'activité", 'required');    
      $this->form_validation->set_rules('date_fin_publication', 'Date de la fin de publication', 'required');

      $this->form_validation->set_error_delimiters('<br /><span class="error erreur">', '</span>');

      // si erreur dans la validation
      if ($this->form_validation->run() == FALSE) 
      {
        $this->_layoutHaut();
        $this->load->view('entreprise/formulaire_publier_offre_emploi_view');
        $this->_layoutBas();
      }
      // si aucune erreur dans la validation
      else 
      {
      // +++++++++++++++++++++++++++++++++++++++++++
        $target_dir = "assets/uploads/";
        $name = basename($_FILES["offre"]["name"]);
        $target_file = $target_dir . basename($_FILES["offre"]["name"]);
        $uploadOk = 1;
        $imageFileType = pathinfo($target_file,PATHINFO_EXTENSION);
        $message = '';

        // Si le formulaire a bien été envoyé
        if(isset($_POST["submit"])) 
        {
          // Vérifie si un fichier est bien sélectionné
          if(($_FILES['offre']['name'])!= '')
          {
            $uploadOk = 1;
            $pasDeFichier = "";
          }
          else 
          {
            // définir le message d'erreur de l'image si le fichier choisi n'est pas une image
            $uploadOk = 0;
            $pasDeFichier = "Vous devez importer un fichier";
          }

          // si le fichier existe déja
          if (file_exists($target_file)) 
          {   
              // définir le message d'erreur de l'image si l'image existe déja dans le fichier de téléchargement
              $uploadOk = 0;
              $message.= "Ce fichier exite déja. Veillez le renommer<br>";
          }
           // si le fichier est plus gros que 500Ko
          if ($_FILES["offre"]["size"] > 500000) 
          {    
            echo "too big";
            die();
            $uploadOk = 0;
            // définir le message d'erreur si l'image est trop volumineuse
            $message.= "Ce fichier est trop volumineux<br>";
          }
          // définir les formats autorisés
          if($imageFileType != "pdf" && $imageFileType != "doc" && $imageFileType != "docx" && $imageFileType != "DOC" && $imageFileType != "DOCX" && $imageFileType != "PDF") 
          {
            // définir le message d'erreur si l'image n'est pas d'un format accepté
            $uploadOk = 0;
            $message.= "Seuls les fichiers .pdf, .doc et .docx sont acceptés";
          }
          // si erreur donc pas d'upload et retour au formulaire avec message d'erreur en fonction de l'erreur
          if ($uploadOk == 0) 
          {
            if ($pasDeFichier != "") {
              $data=array();
              $data["message"]= $pasDeFichier;


              $this->_layoutHaut();
              $this->load->view('entreprise/formulaire_publier_offre_emploi_view', $data);
              $this->_layoutBas();
            }
            else{

                      $data=array();
                      $data["message"]= $message;


                      $this->_layoutHaut();
                      $this->load->view('entreprise/formulaire_publier_offre_emploi_view', $data);
                      $this->_layoutBas();
            }
          } 
          /*si l'image a été uploadé*/
          else
          {
            if (move_uploaded_file($_FILES["offre"]["tmp_name"], $target_file)){

            }
            // Création d'une variable contenant le id de l'entreprise connectée
            $idEntreprise = $this->entreprise_model->lire('id', $conditions = array('courriel' => $_SESSION["courriel_entreprise"])); 
              /*Transformer l'objet en tableau. Nous permet de stocker le id*/
              $data=array();          
                    $data["idEntreprise"]= $idEntreprise;
                    foreach ($idEntreprise as $id) {
                    }
            // ------------------------------  CHECKBOX SECTEURS  -----------------------------------------
            // Récupération et concaténation des valeurs du checkbox multiple (secteurs)
            //déclaration de la variable qui contiendra tous les secteurs
            $secteurs ='';
            //boucle afin d'optenir tous les secteurs
            for ($i=0;$i<count($_POST['secteurs']);$i++)
            {
              //concaténation des champs
              $secteurs .= $_POST['secteurs'][$i];
            }
            // données envoyées au modèle
            $form_data = array(
                        'poste' => set_value('poste'),
                        'ville' => set_value('ville'),
                        'description' => set_value('description'),
                        'date_fin_publication' => set_value('date_fin_publication'),
                        'entreprise_id' => $id['id'],
                        'secteur' => $secteurs,
                        'type_offre_id' => 2,
                        'statut_offre_id' => 2,
                        'offre' => $name
                  );

           // insertion dans la bd
             // si l'insertion est un succes
            if ($this->offre_model->inserer($form_data) == TRUE) 
            {
              redirect('offre_controller/succes_publication_offre_emploi');
            }
            // si l'insertion est un echec
            else
            {
              redirect('offre_controller/echec_publication_offre');
            }
          }
        }
      }
    }

我的pdf文件

我的表格

<!-- UPLOAD DE L'OFFRE (PDF, DOC, DOCX) -->
<p>
    <!-- affichage du message (gestion des messages d'erreurs) -->

        <label for="offre" class="labelVisible labelFile">Veuillez importer votre offre d'emploi<span class="required"></span></label>
        <?php echo form_error('offre'); ?>
        <input id="offre" type="file" name="offre"/>
        <br />

    <?php 
         // si un mesasge d'erreur existe
        if(isset($message)) 
        {
    ?>    
            <span class="erreur"> <?php echo $message; ?></span>
    <?php              
        } 
    ?>
</p>

谢谢

我打赌 PHP upload_max_filesize 设置为默认值 (2MB) 您需要转到 php.ini 文件并搜索 upload_max_filesize 并将其更改为您想要的任何内容需要(8MB,32MB ...)。您还需要将 post_max_size 设置为相同大小或更大。

我假设你在 Windows 机器上,运行 XAMPP,右键单击图标并查找 php.ini 文件打开它并施展你的魔法。