IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AJAX Discussion :

[AJAX] upload ajax avec des fichier compressé..


Sujet :

AJAX

  1. #1
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Mars 2009
    Messages : 22
    Par défaut [AJAX] upload ajax avec des fichier compressé..
    Bonjour tout le monde.
    Je travaille sur un projet en php Symfony, dans un de mes pages, j'ai créé un ajax upload qui charge des fichiers compressés (extension .zip). L'upload fonctionne parfaitement, le fichier zipé se copie dans le répertoire correspondant, et après je dois l'unzipper dans le classe d'actions de php mais il y a toujours un problème = echec de décomprsssion.
    Je n'arrive pas à découvrir où exactement ça foire.
    Voilà le code de la page où je créé l'upload ajax :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
     
    <script type="text/javascript">
    $(document).ready(function() 
    {
        //fonction de pause pour donner le temps de chargement du zip
        function pause(millis)
        {
          var date = new Date();
          var curDate = null;
     
          do { curDate = new Date(); }
          while(curDate-date < millis)
          }
     
        //C le bouton de chargement de l'arborescence
    	new AjaxUpload('#button', 
    	{
    		           action: '<?php echo url_for('@upload');?>',
    		           name: 'userfile',
    	               onSubmit : function(file , ext)
    	               {
                                  if (! (ext && /^(zip)$/i.test(ext)))
                                  {
                                     // extension is not allowed
                                     alert('Error: invalid file extension');
                                     // cancel upload
                                     return false;
                                  }
                                  else
                                  {
     
                                      //var adrs = $('#adr').val();
                                      //alert(adrs)
                                      //DisplayTr(adrs);
                                	$('#filename').val(file);
    					            $('#buttonValid').removeAttr('disabled');
     
    					            pause('500');
     
                                	 $.ajax({
                              	            type: "POST",
                                            url: '<?php echo url_for('template/viewtmpl'); ?>',
                                            data: 'file='+file,
                                            success: function(result){
                                        	    DisplayTr(result);
                              	                  }
                                           });
                                  }
    	               }
    	});	
    	//le window de montrer l'arborescence
    	messageObj = new DHTML_modalMessage();	// We only create one object of this class
    	messageObj.setShadowOffset(5);	// Large shadow
     
    	function DisplayTr(code)
    	{
    		messageObj.setHtmlContent(code);
    		messageObj.setCssClassMessageBox(false);
    		messageObj.setSize(300,500);
    		messageObj.setShadowDivVisible(true);	// Enable shadow for these boxes
    		messageObj.display();
    	}
     
    	function closeTr()
    	{
    		messageObj.close();
    	}
    });
     
    function changeForm()
    {
        $('#tree').hide();
        $('#infos').show();
    }
    </script>
     
    <div id="cont_frm">
      <form action="#" method="post" enctype="multipart/form-data">
        <h1>Nouveau Template</h1>
        <hr />
     
        <div id="tree" style="display:block">
          <table align="center" border=0>
            <tr>
    	   <td>
                <label id="labelfile">Pour pouvoir charger votre arborescence, elle doit etre sous forme d'un fichier zip.<br></label>
    	   </td>
            </tr>
    	 <tr>
    	   <td>
                <input id="button" type="button" value="Parcourir..."/>
    	     <input id="buttonValid" type="button" value="Valider" onclick="changeForm()" disabled="true" />
    	   </td>
            </tr>
    	 <tr>
    	   <td>
                <input type="hidden" name="filename" id="filename" value="" />
    	   </td>
            </tr>
          </table>
        </div>
     
        <div id="infos" style="display:none">
        <table align="center" border=0>
            <tbody>
              <?php echo $tmpl; ?>
            </tbody>
          </table>
          <hr />
          <table align="center" border=0>
            <tr>
              <td colspan="4">
                <input type="submit" value="Enregistrer" />
    	     <input type="reset" value="Annuler" />
              </td>
            </tr>
          </table>
          </div>
      </form>
    </div>
    Avec cet upload, il y a un autre formulaire, c'est pas ça le problème du tout.
    Voilà le code de la classe actions.class.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    //fonction de l upload du tree zipé dans le répertoire d upload
      public function executeUpload(sfWebRequest $request)
      {
          foreach($_FILES as $fichier)
          {
    	 $this->fileName = $fichier['name'];
            $this->target = sfConfig::get('sf_upload_dir').'/'.$this->fileName;
            move_uploaded_file($fichier['tmp_name'], $this->target);
          	exec('chmod 777 '.$this->target);
          }
      }
     
      //fonction qui affiche le tree de template contenu dans le fichier zipé
      public function executeViewtmpl(sfWebRequest $request)
      {
          if ($this->getRequest()->getMethod() == sfRequest::POST)
          {
          	  $this->file = $request->getParameter('file');
              $this->path = sfConfig::get('sf_upload_dir').'/'.$this->file;
    	     //vider le contenu du répertoire de décompression IMPORTANT!!!
    	     exec('rm -rf '.sfConfig::get('sf_upload_dir').'/template/*');
     
              $this->zip = new ZipArchive(); 
              // On vérifie l'ouverture de l'archive
              if($this->zip->open($this->path!== TRUE))
    	      {
              die("Echec lors de l'ouverture de l'archive");
              }
              //extraction
              $this->zip->extractTo(sfConfig::get('sf_upload_dir').'/template/') or die("Erreur rencontrée lors de l'extraction de l'archive");
              //fermeture de l'archive
              $this->zip->close() or die("Erreur lors de la fermeture de l'archive");
              //exec('rm -rf '.$this->path);
        }
      }
    Si qulequ'un a n'importe quelle idée, qu'il me le propose s'il vous plait, je suis liée par un délai
    Merci..

  2. #2
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Mars 2009
    Messages : 22
    Par défaut
    Bonjour,
    J'ai trouvé le problème dans ce bout de code, c'est tout bête mais parfois on peut être si aveugle
    L'erreur est ici:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if($this->zip->open($this->path!== TRUE))
    ça ne s'écrit pas comme ça mais plutôt comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if($this->zip->open($this->path) !== TRUE)
    Vous voyez, c tout bête !!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [jQuery]Ajax et get avec un fichier php
    Par zabibof dans le forum jQuery
    Réponses: 3
    Dernier message: 08/07/2008, 09h32
  2. [AJAX] upload multiple avec (fancy upload)
    Par sculpteur dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 20/12/2007, 17h55
  3. Problème avec des fichiers
    Par Stany dans le forum C++
    Réponses: 7
    Dernier message: 17/10/2005, 16h53
  4. prob avec des fichiers systèmes
    Par oumarsaw dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 23/09/2005, 18h27
  5. execution d'un prog avec des fichiers multi-class
    Par Ice-B dans le forum Général Java
    Réponses: 2
    Dernier message: 05/08/2004, 11h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo