Bonjour a tous,

j'utilise la class ZipArchive pour générer une archive d'une arborescence.

Voici ma class:
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
 
<?php
/**
 * Class permettant de faire des archives
 * @author Hannibal
 */
class ZipBackup extends ZipArchive { 
 
	/**
	 * Constructeur de la class
	 * $nom = nom de l'archive
	 * $flag = flag d'ouverture de l'archive
	 * $commentaire = commentaire sur l'archive
	 */
	public function __construct($nom, $flag = ZIPARCHIVE::CREATE, $commentaire = ""){
 
		// Si le flag nous indique que l'archive doit etre créé (elle n'existe pas)
		if($flag == ZIPARCHIVE::CREATE)
		{
			if ($this->open($nom, ZIPARCHIVE::CREATE) !== TRUE)
				throw new Exception("L'archive ne peut être créée");
		}
		else if($flag == ZIPARCHIVE::OVERWRITE) //si le flag nous indique que nous ecrasons l'archive
		{
			if(!file_exists($nom)) //elle n'existe pas, on la créer
			{
				if ($this->open($nom, ZIPARCHIVE::CREATE) !== TRUE)
					throw new Exception("L'archive ne peut être créée");
			}
			else
			{
				if (!unlink($nom))
					throw new Exception("L'archive ne peut être écrasé");
 
				if ($this->open($nom, ZIPARCHIVE::CREATE) !== TRUE)
					throw new Exception("L'archive ne peut être créée");
			}
		}
 
		if ($commentaire != "")
			$this->setArchiveComment($commentaire);
	}
 
 
	/**
	 * Methode qui permet d'enregistrer une sous arborescence.
	 * $chemin = chemin vers le dossier a sauvé
	 * $prefixe = argument pour la récursivité
	 */
	public function addRecursive($chemin, $prefixe = '')
    {
		// Creation d'un chemin absolu et ajout du séparateur de fichier
        $chemin = realpath($chemin) . DIRECTORY_SEPARATOR;
 
		// Si le chemin ne mene sur rien
        if (!file_exists($chemin)) 
            throw new Exception("Le chemin '$chemin' n'existe pas");
 
		// si le chemin ne mene pas sur un dossier
        if (!is_dir($chemin)) 
            throw new Exception("Le chemin '$chemin' existe mais n'est pas un répertoire");
 
		// Si il est impossible d'ouvrir le fichier
        if (!($dh = opendir($chemin))) 
            throw new Exception("Le répertoire '$chemin' n'est pas accessible");
 
 
		// on parcour le dossier
        while (($fichier = readdir($dh)) !== FALSE) {
 
			// si le ce n'est pas le lien . ou ..
            if ($fichier != '.' && $fichier != '..') {
 
				// Si c'est un dossier
				if (is_dir($chemin . $fichier)) {
 
					// on creer un dossier vide 
					$this->addEmptyDir($prefixe . $fichier); 
 
					// on lance la récursivité
					$this->addRecursive($chemin . $fichier . DIRECTORY_SEPARATOR, $prefixe . $fichier . DIRECTORY_SEPARATOR);
 
				} else { // ici un fichier
 
					// on ajoute le fichier
					if (!$this->addFile($chemin . $fichier, $prefixe . $fichier)) 
						throw new Exception("Le fichier '$chemin/$fichier' n'a pu être ajouté à l'archive");
				}
 
			}
        }
 
		// on ferme le pointeur
        closedir($dh);
    }
}
 
?>
Et voici mon fichier qui utilise la class:
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
 
<?php
include('ZipBackup.php');
 
//le nom de l'utilisateur a backup
$user="racine";
 
//le chemin vers le dossier personnel de l'utilisateur
$dossier="./".$user;
 
$archive=$user."_".date('d-m-Y').".zip";
 
header('Content-Type: application/x-zip');
header("Content-Disposition: attachment; filename=".$archive);
 
 
$zip=new ZipBackup($user."_".date('d-m-Y').".zip");
$zip->addRecursive($dossier);
$zip->close();
 
readfile($archive);
 
 
?>
mon code fonctionne bien, je peux bien sur télécharger l'archive, mais le problème est que l'archive est écrie dans le dossier du fichier qui appel ma class.

Malheureusement moi je ne voudrai pas que cette archive soit ecrie sur le disque. Je voudrai juste la telecharger et ne pas laissé de trace de cette archive sur le serveur.

Donc avez vous une idée de comment faire ceci ? ( soit ne pas ecrire l'archive sur le disque soit la supprimé après téléchargement )

Je vous remercie d'avance pour votre aide


EDIT: "Résolu", en faite je vais tout simplement ecrire dans un partition tmpfs