Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1310 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  compression zip

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

compression zip

n°996236
Dragaodepa​ris
Posté le 28-02-2005 à 19:31:48  profilanswer
 

Salut tout le monde!  :)  
 
Je souhaite écrire un script pour compresser un fichier au format zip.  
Pour cela, j'utilise ce formulaire :
 
<form enctype="multipart/form-data" action="upload.php" method="post">  
               
<input type="hidden" name="MAX_FILE_SIZE" value="4000000">  
<input name="uploadfile" type="file" size="50">  
<input type="submit" value="Upload" align="absmiddle">  
                   
</form>  
 
Ainsi, j'ai une fenêtre de navigation, qui permet au client de sélectionner un fichier dans son disque dur. Ensuite, pour compresser le fichier sélectionné, je dois le lire avec la fonction fopen("chemin_complet_du_fichier", "r" )
Seulement, avec l'adresse du fichier sur le serveur avec $_FILES["uploadfile"]["tmp_name"], j'ai cette erreur :  
Warning: fopen(): Unable to access /var/www/free.fr/e/c/raoul/phpdXh4M4/CRM.doc in /var/www/free.fr/e/c/raoul/projets/compressed.php on line 10
 
Comment faire?
Merci

mood
Publicité
Posté le 28-02-2005 à 19:31:48  profilanswer
 

n°997640
omega2
Posté le 01-03-2005 à 22:21:05  profilanswer
 

T'es sur que le fichier est bien uploader dans ce dossier là? Ca me parait improbable.

n°1000009
Dragaodepa​ris
Posté le 03-03-2005 à 19:08:16  profilanswer
 

oui, enfin presque. Dans le formulaire, j'ai bien action="compressed.php" et non upload.php
 
Dans tous les cas, je n'arrive pas à me débarrasser de cette erreur.
Merci
 
 

n°1000043
omega2
Posté le 03-03-2005 à 19:34:01  profilanswer
 

En quoi, le probléme est il différent?
Si le script ne cherche pas le fichier là où il se trouve, il ne risque pas de le trouver.

n°1000107
Djebel1
Nul professionnel
Posté le 03-03-2005 à 20:24:36  profilanswer
 

quand tu fais 'echo $_FILES["uploadfile"]["tmp_name"]', ca te sort  /var/www/free.fr/e/c/raoul/phpdXh4M4/ ?
 
sinon, dans le php.ini tu peux configurer la taille maximum du fichier uploadé. Et je ne sais pas quelle valeur a la priorité entre la valeur du php.ini et la valeur dans ton '<input type="hidden" name="MAX_FILE_SIZE" value="4000000"> '.
Donc je suis vraiment pas sur, mais pitetre ton fichier est trop gros par rapport à ce qui est défini dans le php.ini et ca bug ... mais c'est une hypothèse, pas taper pas taper :D

n°1000115
omega2
Posté le 03-03-2005 à 20:34:10  profilanswer
 

Avec la valeur dans le "input", c'est le navigateur qui refusera la validation du formulaire.
Avec la valeur dans le php.ini, le fichier envoyé sera reçu quelle que soit sa taille, mais ensuite, il ne sera pas retransformé en fichier si sa taille dépasse celle indiqué dans le php.ini . Du coup, un fichier trop grand ne sera pas accéssible par un script php, mais son envoie risque de porovoquer un time out du dit script.

n°1000258
Dragaodepa​ris
Posté le 03-03-2005 à 23:38:25  profilanswer
 

Excusez-moi, j'ai du mal m'exprimer.  
echo $_FILES["uploadfile"]["tmp_name"] me donne bien : /var/www/free.fr/e/c/raoul/phpdXh4M4  
 
et j'utilise ce formulaire :  
<form enctype="multipart/form-data" action="compressed.php" method="post">
     
<input type="hidden" name="MAX_FILE_SIZE" value="4000000">
<input name="compressfile" type="file" size="50">
<input type="submit" value="Compress" align="absmiddle">
</form>

n°1000265
Djebel1
Nul professionnel
Posté le 03-03-2005 à 23:59:47  profilanswer
 

ton script qui utilise fopen() pour ouvrir le fichier, est-ce bien le script "compressed.php" ? car le fichier uploadé ne persiste dans le répertoire temporaire que le temps du script. Si tu veux l'utiliser sur un autre script il faut le sauvegarder, avec par exemple "move_uploaded_file"

n°1001707
Dragaodepa​ris
Posté le 05-03-2005 à 12:29:31  profilanswer
 

fopen() fait bien parti de mon script "compressed.php"
Mais tu m'as donné une bonne idée : utiliser "move_uploaded_file" afin de déplacer le fichier d'un répertoire temporaire sur un autre répertoire, et là, je ne sais pas trop pourquoi, fopen() s'exécute correctement!
Merci
 
En revanche, j'ai une nouvelle erreur, la célèbre erreur : "Warning: Cannot modify header information - headers already sent by... " parce que je dois faire appel à la librairie zip :
"require_once('func/zip.lib.php');"
et ensuite l'erreur apparait ici :  
  // entêtes HTTP
  header('Content-Type: application/x-zip');
  // force le téléchargement
  header('Content-Disposition: inline; filename=archive.zip');"
 
Comment je pourrais esquiver ces headers?
Merci

n°1001711
Dragaodepa​ris
Posté le 05-03-2005 à 12:44:51  profilanswer
 

j'ai trouvé, c'est plus simple que je le pensais :  
il y avait des espaces et lignes vides après le code php de 'zip.lib.php'

mood
Publicité
Posté le 05-03-2005 à 12:44:51  profilanswer
 

n°1015574
Le Veilleu​r
Posté le 17-03-2005 à 08:17:38  profilanswer
 

Salut,
 
je suis très interessé par ton fichier compressed.php, est ce que ca ne te dérange pas de le publier ?
 
merci


---------------
Mon Blog : LeVeilleur.net | Hébergement d'images : Hostipics.net
n°1015580
Le Veilleu​r
Posté le 17-03-2005 à 08:59:25  profilanswer
 

En fait j'ai reussi,  
 
J'utilise ce code
 

Code :
  1. // Compression de ce fichier
  2. // appel de la classe
  3.   require_once('zip.lib.php');
  4. // nom du fichier à ajouter dans l'archive
  5.   $filename = $image1;
  6.    
  7.     // contenu du fichier
  8.     $fp = fopen ($filename, 'r');
  9.     $content = fread($fp, filesize($filename));
  10.     fclose ($fp);
  11.    
  12.     // création d'un objet 'zipfile'
  13.     $zip = new zipfile();
  14.     // ajout du fichier dans cet objet
  15.     $zip->addfile($content, $filename);
  16.     // production de l'archive' Zip
  17.     $archive = $zip->file();
  18.    
  19.     // entêtes HTTP
  20.     header('Content-Type: application/x-zip');
  21.     // force le téléchargement
  22.     header('Content-Disposition: inline; filename=archive.zip');
  23.    
  24.     // envoi du fichier au navigateur
  25.     echo $archive;


 
Mais je voudrais laisser le fichier zip, et ne pas le faire télécharger.
 
merci


---------------
Mon Blog : LeVeilleur.net | Hébergement d'images : Hostipics.net

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  compression zip

 

Sujets relatifs
Algo compression Decompression TMS[AIDE] Compression d'image
[C] Compression et archivageCompression jepg
[Matlab] Programme de compression JPEG[Matlab] Programme de compression JPEG
compression de texte : algo efficace même sur peu de données[PHP] compression de plusieurs fichiers -> en zip
PclZip : compression de plusieurs fichiers = problème ![Compression DivX En Système Répartis] Multiple thread listener ?
Plus de sujets relatifs à : compression zip


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR