Upload and zip your files

Description

ok, une source à 4 sous pour uploader un fichier sur votre serveur et qu'il soit sauver dans un zip à la manière de codes-sources: avec d'autres fichiers "publicitaires". Ici il s'agit d'un fichier ReadMe.txt. Un lien au passage est créer pour forcer le download (afin de vérifier).

Source / Exemple :


// --   fichier up_and_zip.php

<?php

function getFileName($fichier) 	// permet de récupérer le nom d'un fichier sans son extension
{

$pos = strrchr($fichier, '.');	// on regarde où il y a le point
$pos = strlen($pos);		
$pos2 = strlen($fichier);		
$pos3 = $pos2 - $pos;
$fichier =  substr($fichier, 0, $pos3); // et on vire tout à partir de là
return $fichier;
}

$submit = (isset($_POST['submit']))?$_POST['submit']:NULL;
if($submit === NULL){
    
    $max_size = 50; // 50kb. Mettez ce que vous voulez ici!
?>

<form enctype="multipart/form-data" action="<?php echo $_SERVER['SCRIPT_NAME'];?>" method="post">
<input type="hidden" name="MAX_FILE_SIZE" value="<?php echo 1024*$max_size;?>" />
Envoyez ce fichier : <input name="userfile" type="file" />
<input type="submit" name="submit" value="Envoyer le fichier" />
</form>
<?php
} // ok, là c'était le formulaire... ras...
else {

    $uploaddir = $_SERVER['DOCUMENT_ROOT']."/uploads/"; // on fixe l'adresse du dossier uploads
    $userfile   = $_POST['userfile']; // on récupère le chemin du fichier à uploader

    if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploaddir . $_FILES['userfile']['name'])) { 
	// on upload dans le dossier uploads
       echo "Le fichier ".$_FILES['userfile']['name']." est valide et a été téléchargé avec succès.<br />";
	// si ça a marché, on va le zipper avec pclzip
	// plus d'infos sur www.phpconcept.net/pclzip

        include_once('libs/pclzip.lib.php');
        $fich = $_FILES['userfile']['name'];
        $fn = getFileName($fich);
    
        chdir('uploads'); // répertoire courant
    
        $archs = $fn.".zip";
        $archive = new PclZip($archs); // archive en création
    
        $listing = $_FILES['userfile']['name'];
        $v_list = $archive->create("ReadMe.txt,".$listing); // création de l'archive avec son contenu: ReadMe.txt et le fichier

        unlink($fich);

            if ($v_list == 0) {
            die("Error : ".$archive->errorInfo(TRUE));
            }
    else{
        echo "Il a été zippé et a maintenant comme nom <b>$fn.zip</b>.<br />";
        echo "Il est accessible en cliquant sur ce <A HREF=\"download.php?fichier=$archs\">lien</A><br />"; // et on peut checker le résultat
    }

} else { // en cas d'échec au zippage, traitement des erreurs
        echo "Le fichier n'a pas été téléchargé: ";
    $size = $_FILES['userfile']['size'];
        switch ($_FILES['userfile']['error']){
        case "1": echo " fichier trop volumineux."; break;
        case "2": echo " fichier trop volumineux."; break;
        case "3": echo " fichier n'a été que partiellement téléchargé"; break;
        case "4": echo " aucun fichier n'a été téléchargé"; break;
        }
    }

}

?>

// --   fichier donwload.php

<?php

$fichier = $_GET['fichier'];
$path = "uploads/$fichier";
$type = "application/rar";
if (isset($path) and file_exists($path))
{
    header("Content-type: application/force-download"); // pour forcer le téléchargement d'un fichier
    header("Content-Disposition: attachment; filename=$fichier");
    readfile("$path");
}
else{
echo "Le fichier $fichier n'existe pas!";}

?>

Conclusion :


Ce qu'il faut faire...
- créer un dossier uploads avec les droits 777 (ainsi le fichier peut écrire dedans)
- y mettre un fichier ReadMe.txt (y écrire n'importe quoi, c'est pour essayer)
- créer un dossier libs et y mettre pclzip.lib.php ou modifier la ligne "include_once('libs/pclzip.lib.php');" La librairie est dans le zip en annexe

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.