envoi d'un ZIP

envoi d'un ZIP - PHP - Programmation

Marsh Posté le 20-05-2010 à 16:45:41    

Bonjour,
 
J'ai écrit un script PHP qui compresse un dossier en archive .ZIP que je souhaite envoyer par la suite.
Toute cette partie fonctionne mais j'ai un problème quand je souhaite l'ouvrir il y a un message d'erreur qui me dit que le fichier est endommagé.
Par contre j'ai essayé sans les header et l'archive s'ouvre correctement en local mais j'ai quand même besoin des header.
 
Voici mon code php:


include('pclzip-2-5/pclzip.lib.php');
    $archive = new PclZip('datas.zip');
    $data = $archive->create($_COOKIE['dir']);
     
    header('Content-Type: application/zip');
    header("Content-length: ".filesize("datas.zip" ));
    header('Content-Disposition: attachment; filename="datas.zip"');
    header('Content-Transfer-Encoding: binary');  


$_COOKIE['dir'] correspond au répertoire à zipper.
 
Cordialement, mike0794.

Reply

Marsh Posté le 20-05-2010 à 16:45:41   

Reply

Marsh Posté le 20-05-2010 à 17:25:44    

$_COOKIE['dir'], ça va pas correspondre à un dossier qui se trouve sur le poste client par hasard? Si oui, en local, ça peut fonctionner, mais après, non.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 21-05-2010 à 09:32:30    

En faite le problème ne vient pas de $_COOKIE['dir'] car il contient juste le nom du répertoire présent sur le serveur qu'il faut zipper.
Je pense que le problème vient surtout de l'envoi c'est à dire dans les header.
 
J'espère que j'ai bien expliqué mon problème, si vous avez une solution je suis preneur!
merci d'avance.

Reply

Marsh Posté le 25-05-2010 à 13:29:25    

Essayes sans les headers. Tu sauvegardes le fichier zip dans un répertoire temp et tu proposes à l'utilisateur un lien hypertexte pour télécharger le fichier zip généré. Si ça marche bien, c'est que ça vient du contenu des headers.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 25-05-2010 à 16:21:45    

Doit manquer des trucs...
http://www.commentcamarche.net/faq [...] ece-jointe
 
En gros faut prendre tout le contenu du fichier avec file_get_contents() et le mettre dans le mail.

Reply

Marsh Posté le 25-05-2010 à 17:59:02    

haaaaaaaa
commentcamarche... Vade Retro !!!


---------------
http://www.ypikay.com
Reply

Marsh Posté le 26-05-2010 à 11:49:02    

G31 a écrit :

Doit manquer des trucs...
http://www.commentcamarche.net/faq [...] ece-jointe
 
En gros faut prendre tout le contenu du fichier avec file_get_contents() et le mettre dans le mail.


 
sauf que c'est pas un envoi par mail qu'il veut faire mais proposer un fichier en téléchargement...


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 26-05-2010 à 14:00:56    

bizarre ton truc, t'as rien mis après les headers ?

Reply

Marsh Posté le 26-05-2010 à 14:56:05    

C'est bon j'ai finalement trouvé une solution, je poste mon code avec des commentaires.

Code :
  1. include_once('pclzip-2-8-2/pclzip.lib.php');
  2. $archive = new PclZip('datas.zip');
  3. $archive->create($_COOKIE['dir']."/Diagramme" ); // premier dossier à ajouter à l'archive
  4. $archive->add($_COOKIE['dir']."/Donnees" );  // second dossier à ajouter
  5. rename("datas.zip",$_COOKIE['dir']."/datas.zip" ); // on déplace l'archive dans le dossier client
  6. header("Location: ".$_COOKIE['dir']."/datas.zip" ); // chemin du fichier zip

mike0794.

Reply

Marsh Posté le 27-05-2010 à 11:10:11    

Si je comprends bien ce que tu as fait, t'es passé par un fichier stocké sur le serveur avant envoi, comme je te l'avais conseillé dans mon 2ième post, c'est bien ça?


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed