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
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.