Reassembler fichier sur serveur

Soyez le premier à donner votre avis sur cette source.

Snippet vu 9 098 fois - Téléchargée 22 fois

Contenu du snippet

Ce script permet de re-assembler des fichier slipté
par la commande 'split' ou avec HJSplit par PHP !

L'interet est donc de pouvoir depasser la possible
limitation d'upload de certain FAI (temps comme espace)

Source / Exemple :


<?php /*********************************************************************************************

 Copyright:	Superpok (P. M.)
 Date:		16/07/2007
 Nom: 		reax.php
 Version: 	1.0

 Description: 	Ce script permet de re-assembler des fichier slipté
		par la commande 'split' ou avec HJSplit par PHP !

 Interet:	Depasser la possible limitation d'upload de certain FAI (temps comme espace)

 Usage: 	Decouper vos fichier avec HJSplit (http://www.treepad.net/download/hjsplit.zip)
		Uploader sur votre ftp (ex: ...free.fr)
		Modifier Ce fichier :
			- $BUF_MAX: Laisser par defaut (33Mo max pour free)
			- $file: doit etre le Nom de votre fichier avant la decoupe

		ATTENTION!!!, Lors du reassemblage votre page web va tres certainement planter (503) !
		Il semble que meme apres le plantage de la page web, php continue de reassembler :)))
		Utiliser votre logiciel FTP pour voir l'avancement du re-assemblage.
		N'EFFACER SURTOUT PAS le fichier sur le ftp car meme si il ne semble plus grossir
		Il se peut que vous ne le voyez pas (reconnecter vous sur le ftp), 
		De plus une fausse manip et vous plantez le server php ! [sur free en tout cas]

		SO, NO EXCITATION :)

                                                                                                                                                                                                  • /
$BUF_MAX=10000000; $file="mongrosfichieriso.iso"; if(!file_exists($file.".001")) die($file.".001 non trouvée"); $zeros = '00'; $i = '001'; $i=(int)$i; $handle2 = fopen($file, "ab"); while(file_exists($file.".".$zeros.$i)) { $handle = fopen($file.".".$zeros.$i, "rb"); while(fwrite($handle2,fread($handle,$BUF_MAX))); fclose($handle); $i++; if($i == 10) $zeros = '0'; elseif($i == 100) $zeros = ''; } fclose($handle2); ?>

A voir également

Ajouter un commentaire Commentaires
Messages postés
6
Date d'inscription
dimanche 25 avril 2004
Statut
Membre
Dernière intervention
1 avril 2007

bien vu codefalse;
utilisation de mes propres mots, ou aussi appellé 'le celebre effet mirroir' avec lequel
je faisais deja fureur a la maternelle.
aller je t'accrode le dernier mot. tu as gagné .. (pas grand chose en fait.)

++ sous le bus
Messages postés
3
Date d'inscription
mardi 30 janvier 2007
Statut
Membre
Dernière intervention
21 février 2007

je voulais dire automatique dans le sens 'ne pas avoir a modifier $file dans le script'
a force de lire à droite à gauche, jai fait ça qui me va mieux :

<?php /*********************************************************************************************

Usage: Decouper votre fichier avec HJSplit (http://www.treepad.net/download/hjsplit.zip)
Uploader toutes les parties sur votre site par ftp.
Uploader ce script dans le même répertoire.
Une fois tout uploadé, ouvrir ce script php avec le browser (testé avec Internet Explorer)

Le script va assembler les fichiers ffffff.xxx.001, ffffff.xxx..002 etc. du répertoire où il se trouve.
Le résultat sera dans le fichier ffffff.xxx
La progression de l'assemblage est indiquée par un message pour chaque partie assemblée.

Si le fichier résultat ffffff.xxx existe déjà ou si le script ne trouve pas de fichier *.001, rien n'est effectué.

A l'utilisateur d'effacer à la fin les parties *.001, *.002 etc.

ATTENTION!!!, Lors du reassemblage votre page web peut planter (erreur 503) !
Il semble que meme apres le plantage de la page web, php continue de reassembler :)))
Utiliser votre logiciel FTP pour voir l'avancement du re-assemblage.
N'EFFACER SURTOUT PAS le fichier sur le ftp car meme si il ne semble plus grossir
Il se peut que vous ne le voyez pas (reconnecter vous sur le ftp),
De plus une fausse manip et vous plantez le server php ! [sur free en tout cas]

*************************************************************************************************/

/* parcours du dossier courant pour trouver un fichier portant l'extension .001 */
$dossier = opendir (".");
$existe001= False;

echo "ASSEMBLAGE GROS FICHIER
";

while ($fichier = readdir ($dossier))
{
if(substr($fichier,-3) == "001")
{
$existe001= True;
$fichier_a_assembler = substr($fichier,0,strlen($fichier)-4);
echo "Fichier a assembler : " , $fichier_a_assembler, "
";
}
}
closedir ($dossier);

/* si pas de fichier .001 trouvé, exit */
if(!$existe001) die("

*** PAS DE FICHIER .001 TROUVE ***");

/* verication que le fichier résultant n'existe pas déjà !!! */
if (file_exists($fichier_a_assembler)) die("

*** Le fichier résultat ". $fichier_a_assembler . " EXISTE DEJA !!! ***");

/* assemblage du fichier */

$BUF_MAX =10000000;

$zeros = '00';
$i = '001';
$i=(int)$i;

$handle2 = fopen($fichier_a_assembler, "ab");

while(file_exists($fichier_a_assembler.".".$zeros.$i))
{
$handle = fopen($fichier_a_assembler.".".$zeros.$i, "rb");
while(fwrite($handle2,fread($handle,$BUF_MAX)));
fclose($handle);
echo "--partie ", $zeros, $i , " ajoutée.
";

$i++;
if($i 10) $zeros '0';
elseif($i 100) $zeros '';
}

fclose($handle2);

echo "
Le fichier " , $fichier_a_assembler , " a été ré-assemblé avec succès.";
echo "
Sa taille est de " , filesize($fichier_a_assembler) , " octets.";

?>
Messages postés
1123
Date d'inscription
mardi 8 janvier 2002
Statut
Modérateur
Dernière intervention
21 avril 2009
1
en fait c'est ton "Voila pourquoi j'ai si peu de consideration pour les details dont vous me faite part." qui "apporte un reel interet au debat et donne clairement la sensation d'une entente cordiale et intelligente."

C'était d'apres moi une reflexion completement inutile, juste mettre "Pour les autres, sachez que je viens du language C et que le php ne m'interesse que tres peu." aurait été largement suffisant.
Voila pourquoi j'ai réagit ainsi. J'ai pas attaqué, j'ai défendu.

"(jespere ne pas tavoir outré, en toute sinceritée)", moi non plus :)
Messages postés
6
Date d'inscription
dimanche 25 avril 2004
Statut
Membre
Dernière intervention
1 avril 2007

codefalse:

biensur, mes programme en C ne fonctionne pas,
pas plus que mon code php, ce code est parfaitement inutile et c'est a ce demander pourquoi je l'ai posté.

j'ajoute que les commentaires comme 'tu n'es pas un dieu en ma connaissance et ton code le prouve ...' apporte un reel interet au debat et donne clairement la sensation d'une entente cordiale et intelligente. (jespere ne pas tavoir outré, en toute sinceritée)

alkasar:
tout est automatique normalement,
suffit davoir les fichier .00x du meme nom que le fichier final
exemple:
bonjour.avi (700mo)
bonjour.avi.001 (50mo)
bonjour.avi.002 (50mo)
bonjour.avi.003 (50mo)
bonjour.avi.004 (50mo)
[...]
$file sera "bonjour.avi"

De plus l'impression de passer pour un 'autiste programmeur' me passe largement au dessus de la tete au vu des reflexions pertinentes dont vous me faites part et qui donne a ce code un petit coté rustique avant-gardiste.
Messages postés
3
Date d'inscription
mardi 30 janvier 2007
Statut
Membre
Dernière intervention
21 février 2007

j'ai compris le buf_max. Simplement la quantité d'octets max lus par fread a chaque fois. Le nom de la variable m'a induit en erreur.
J'ai aussi réussi a faire ce que je voulais pour automatiser la recherche de .001 et assembler ce fichier. Plus besoin de modifier le fichier script ;)
Afficher les 13 commentaires

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.