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 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link href="css/styles.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" language="JavaScript">
function CheckChildren(id,status)
{
for(var i=0;i<document.form.length;i++){
if(document.form.elements[i].type=="checkbox" && document.form.elements[i].id==id){
document.form.elements[i].checked=status;
}
}
}
</script>
<title>Tree Folder</title>
</head>
<body >
<img src=images/aologo.jpg width=30% height=30% align='right'></img>
<h2>OpenText Folder from <?php echo $_GET['url'];?> </h2>
Clik on folder to expand<br /><br />
Select file and clik on Zip&Download button to download an archive file
<br /><br />
<?php
require_once('C:\Program Files\EasyPHP5.3.0\phpmyadmin\libraries\zip.lib.php');
/* ******************************************************************************* */
// function listingDir par DEHAN Thomas
// Fonction récursive permettant de générer une arborescence de fichiers
// $path : chemin du dossier à lister
// $profondeur : nombre de dossier à explorer par rapport à $path
// $profdep = 0 : ne pas toucher, valeur de départ
// $id=0 : permet par la suite d'identifier les fichiers enfants des dossiers parents
/* ******************************************************************************* */
function listingDir($path, $profondeur=9999, $profdep=0,$id=0 ) {
echo is_dir($path);
if (is_dir($path)) {
if (substr($path, -1, 1) !='/') {
$path .= '/';
}
}
//echo 'profdep='.$profdep.'<br />';
//on compte le nb de / au lancement
if ($profdep == 0) {
$profdep= substr_count($path, '/');
}
if (is_dir($path)) {
//on definit le nom du dossier à afficher
if (substr($path, -1, 1) =='/') { //si ça finit par un slash on le vire pr avoir le nom du dossier
$dirnam = substr($path, 0,(strlen($path)-1)); //on vire le dernier shash
} else {
$dirnam = substr($path, 0,(strlen($path))); //on garde le nom du dossier comme ça
//$path.= '\\'; //et on ajoute un slash a la fin du path pr avoir d chemins ok
}
$dirnam = strrchr($dirnam, "/"); // on recup le nom du dernier dossier
$dirnam = str_replace (array('/'), array(''), $dirnam); // on vire le 1er shash
if ($dirnam == '')
echo '<strong><a href="#" onclick="if (document.getElementById(\'level'.$profondeur.$dirnam.'\').style.display!=\'block\') {document.getElementById(\'level'.$profondeur.$dirnam.'\').style.display=\'block\';} else { document.getElementById(\'level'.$profondeur.$dirnam.'\').style.display=\'none\' }">OpenText Folder</a></strong><br /><div id="level'.$profondeur.$dirnam.'" style=" margin-left: 15px; display: none;">'."\n";
else{
echo '<input name="chkdir[]" value='.$id.$dirnam.' type="checkbox" onclick="if (this.checked) {CheckChildren(\''.$id.$dirnam.'\',true)} else {CheckChildren(\''.$id.$dirnam.'\',false)};">';
echo '<strong><a href="#" value='.$path.' onclick="if (document.getElementById(\'level'.$profondeur.$dirnam.'\').style.display!=\'block\') {document.getElementById(\'level'.$profondeur.$dirnam.'\').style.display=\'block\';} else { document.getElementById(\'level'.$profondeur.$dirnam.'\').style.display=\'none\' }">- '.$dirnam.'</a></strong><br/><div id="level'.$profondeur.$dirnam.'" style=" margin-left: 15px; display: none;">'."\n";
}
if ($dh = @opendir($path)) {
//Récupération des dossiers et des fichiers dans 2 tableaux différents
$tab_file=array();
$tab_dir=array();
while (($file = readdir($dh)) !== false) {
if (($file == '.') || ($file == '..')){
}else if (is_dir($path . $file)) {
$tab_dir[]=$file;
}else $tab_file[]=$file;
}//Tri des tableaux
sort($tab_file);
sort($tab_dir);
foreach ($tab_dir as $elem1){
listingDir(($path.$elem1),$profondeur-1, $profdep,$id+1);
}
foreach($tab_file as $elem2){
echo '<input name="chkfile[]" value='.$path.$elem2.' id='.$id.$dirnam.' type="checkbox" a href="'.$path.$elem2.'">'. $elem2.'</a><br>'."\n";
}
closedir($dh);
echo '</div>'."\n";
}
}
}
$zip = new ZipArchive();
$time=time();
if(!isset($_POST["chkfile"])) {
//echo "Aucun fichier sélectionné";
}else {
// On ouvre l'archive
if($zip->open('Archive'.$time.'.zip') == TRUE)
// On crée l'archive
if($zip->open('Archive'.$time.'.zip', ZipArchive::CREATE) == TRUE)
{
echo '"Zip.zip" ouvert';
for ($i = 0; $i < count($_POST["chkfile"]); $i++){
$filename = $_POST["chkfile"][$i];
$zip->addFile($filename);
}
$zip->close();
}else
{
echo 'Impossible d'ouvrir "Zip.zip"';
}
// On peut ensuite si on veut comme dans le tuto de DHKold proposer le téléchargement
header('Content-Type: application/x-zip') ; //on détermine les en-tête
header('Content-Transfer-Encoding: binary'); //Transfert en binaire (fichier)
header('Content-Disposition: attachment; filename="Archive.zip"'); //Nom du fichier
header('Content-Length: '.filesize('Archive.zip')); //Taille du fichier
readfile('Archive'.$time.'.zip');
}
?>
<FORM method="POST" name="form">
---------------------------------------------------------------------------------------------------------------------------
<br></br>
<input type="Submit" value="Zip&Download">
<br></br><br></br><br></br>
<?php
listingDir('\\aofrso001\star2');
?>
</FORM>
</body>
</html> |
Partager