5/5 (22 avis)
Snippet vu 17 013 fois - Téléchargée 27 fois
# Le premier fichier (la partie automatisée) # <?php echo '<?xml version="1.0" encoding="utf-8"?>'; ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <style type="text/css"> body{font-family:'Sans', 'Helvetica', 'Verdana','Hoefler Text', 'Times New Roman','Times New Roman', Times, serif; font-size:14px;} table{font-family:'Sans', 'Helvetica', 'Verdana','Hoefler Text', 'Times New Roman','Times New Roman', Times, serif; font-size:14px;} a:link{font-size:14px; Text-Decoration:none; color : #000000;font-family:'Sans', 'Helvetica', 'Verdana','Hoefler Text', 'Times New Roman','Times New Roman', Times, serif;background-color:transparent;} a:active{font-size:14px; Text-Decoration:none; color : #000000;font-family:'Sans', 'Helvetica', 'Verdana','Hoefler Text', 'Times New Roman','Times New Roman', Times, serif;} a:visited{font-size:14px; Text-Decoration:none; color : #000000;font-family:'Sans', 'Helvetica', 'Verdana','Hoefler Text', 'Times New Roman','Times New Roman', Times, serif;} a:hover{color : #000000;font-size:14px; Text-Decoration:underline; font-family:'Sans', 'Helvetica', 'Verdana','Hoefler Text', 'Times New Roman','Times New Roman', Times, serif;} input{color:#333333;border-width:1px;border-color:#666666;border-style:solid;margin:auto;} </style> <title>Réconciliez vous avec votre hébergeur gratuit</title> </head> <body> <p style="font-size: 12px; font-family: Verdana, arial;"><b><big>É</big>vitez la restricion de taille des fichiers imposée par votre hébergeur</b><br /><br /></p> <hr /> <form enctype="multipart/form-data" action="upload.php" method="post"><p>Cutsize (taille maximale des fichiers en ko): <input name="cutsize" type="text" value="500" /><br />Utiliser un fichier sur votre machine: <input type="file" name="userfile" /><br /><input type="checkbox" name="createfolder" value="1" /> Placer les parties du fichier dans un dossier ayant le nom du fichier<br /><input type="checkbox" name="createphpfile" value="1" /> Créer un fichier contenant le code du réassembleur de fichier (il sera nommé "index.php" si les parties sont dans un dossier ou sera nommé nom_du_fichier.extension.php dans le cas contraire)<br /><input type="submit" value="Envoyer le fichier" /></p></form> <hr /> <p> <?php if (isset($_POST["cutsize"])) $cutsize = $_POST["cutsize"] * 1024; else $cutsize = 1024*800; if (isset($_FILES['userfile']['name'])) { $file = basename($_FILES['userfile']['name']); echo "Détails de l'upload du fichier ".$file.":<br />\n"; $path = ""; if (isset($_POST["createfolder"]) && $_POST["createfolder"]=="1") { $path = $file."/"; if (!is_dir($file)) { mkdir ($file, 0755) or die ("Erreur fatale: impossible de cé le fichier ".$file); echo "Dossier ".$file." crée avec succès...\n"; } else echo "Le dossier ".$file." existe déjà...<br />\n"; } $handle = fopen($_FILES['userfile']['tmp_name'], "rb") or die ("Impossible de lire le fichier uploadé!"); $i = 0; while (!feof($handle)) { $istring = str_pad($i, 3, '0', STR_PAD_LEFT); $partstring = ""; while(strlen($partstring)<$cutsize && !feof($handle)) $partstring .= fgets($handle, $cutsize-strlen($partstring)+1); $partfile = fopen($path.$file.".".$istring, "wb") or die("Erreur fatale: impossible d'ouvrir ".$file.".".$istring); fwrite($partfile, $partstring) or die("Erreur fatale: impossible d'écrire dans ".$file.".".$istring); fclose($partfile); echo "Fichier $i ecrit<br />\n"; $i++; } fclose($handle); echo "Le fichier ".$file." a été découpé en ".$i." parties.<br />\n"; $code = '<?php $file = "'.$file.'"; if (!file_exists($file.".000")) die("Partie 000 de $file non trouvée"); if (strstr($HTTP_USER_AGENT,"MSIE")) $attachment = ""; else $attachment = " attachment;"; header("Content-type: application/octet-stream"); header("Content-Disposition:$attachment filename=$file"); header("Content-Description: File Transfer"); $istring = "000"; $i = 0; while(file_exists($file.".".$istring)) { readfile($file.".".$istring); $i++; $istring = str_pad($i, 3, "0", STR_PAD_LEFT); } ?>'; if (isset($_POST["createphpfile"]) && $_POST["createphpfile"]=="1") { if (isset($_POST["createfolder"]) && $_POST["createfolder"]=="1") { $phpfile = fopen($path."index.php", "w") or die("Erreur fatale: impossible d'ouvrir ".$phpfile); } else { $phpfile = fopen($file.".php", "w") or die("Erreur fatale: impossible d'ouvrir ".$phpfile.".php"); } fwrite($phpfile, $code) or die("Erreur fatale: impossible d'écrire dans ".$phpfile); fclose($phpfile); echo "Code php écrit avec succès<br />\n"; } echo "</p><hr />"; } else echo "</p>"; ?> <p> </p> <p style="font-size: 12px; font-family: Verdana, arial;"><a href="http://validator.w3.org/check?uri=referer"><img style="border:0px;width:88px;height:31px" src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0 Strict" /></a> <a href="http://jigsaw.w3.org/css-validator/check/referer"><img style="border:0px;width:88px;height:31px" src="http://jigsaw.w3.org/css-validator/images/vcss" alt="Valid CSS!" /></a></p> </body> </html> # Fin du premier fichier # # Le second fichier (code qui réassemble vos parties) # <?php /* La partie du code la plus importante: celle qui réassemble le fichier $file des parties "$file.000", "$file.001", etc... Et les donne en téléchargement à l'utilisateur.
18 oct. 2007 à 19:36
Le script fonctionne tres bien, tant que le fichier
à une taille inferieur à upload_max_filesize.
Des que le fichier depasse cette taille, le script ne recoit meme
pas l'info venant du formulaire!
isset($_FILES['userfile']['name']) est false!
pourriez vous m'aider?
29 déc. 2006 à 11:24
Donc faites un tour sur le site si vous voulez l'update: http://phpmagic.awardspace.com/
18 sept. 2006 à 18:45
Signé : un inconditionnel du cpp ...
27 juin 2006 à 17:30
et pour répondre à zeratul67, comme je l'ai dit précédemment cette découpe est possible en php, tout simplement en découpant le fichier uploadé quand il est encore dans le fichier temporaire du serveur (la restriction de taille n'est alors pas encore appliquée). Regardez le code que j'ai uploadé sur mon site: http://phpmagic.awardspace.com il découpe le fichier et créer le fichier contenant le code php qui le re-rassemble. Dites moi ce que vous en pensez et j'aimerais bien que des gens l'essayent (en fait je ne suis pas sur à 100% que ça fonctionne sur tout les serveurs, mais si c'est le cas j'updaterais le code de phpcs).
Par contre découper en javascript, à mon avis, ça le fait pas trop :D
27 juin 2006 à 14:02
split -b taille -d -a 3 fichier fichier.
ou vous pouvez utilisez les suffixes k et m pour la taille (pour free 1 ou 2 m est une bonne taille).
le premier "fichier" est le nom du fichier à découper et le second est le préfixe (donc ne SURTOUT pas oublier le point à la fin).
Voila, j'aurais envie de dire gg kurt !
Pour démonstration de ce système : http://wildersmovies.free.fr/ -> la Maison de l'erreur
Quoi? de la pub??, mais vous mentez ! c'est pas vrai!
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.