begin process at 2012 05 27 18:14:48
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Astuces

 > REASSEMBLER FICHIER SUR SERVEUR

REASSEMBLER FICHIER SUR SERVEUR


 Information sur la source

Note :
Aucune note
Catégorie :Astuces Classé sous :fichier, reassembler, split, hjsplit, assembler Niveau :Initié Date de création :16/01/2007 Date de mise à jour :20/01/2007 14:44:28 Vu :8 139

Auteur : superpok

Ecrire un message privé
Commentaire sur cette source (13)
Ajouter un commentaire et/ou une note

 Description

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

  • <?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);
  • ?>
<?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);

?> 



 Historique

16 janvier 2007 14:39:53 :
lol, j'avais oublié un ptit truc :)
20 janvier 2007 14:41:40 :
voila, jai changé le <? et c'est __moin-crade__ .. bref .
20 janvier 2007 14:44:28 :
jarrive a faire des erreurs en modifiant ...

 Sources de la même categorie

AFFICHÉ SUR UN TABLEAU AVEC PAGINATION ET BASE DE DONNÉES par stormxp
Source avec Zip Source avec une capture GENERATEUR D'ONGLET DE NAVIGATION PHP par pos123
FORMATER UN LIEN YOUTUBE, DAILYMOTION OU VIMEO POUR L'UTILIS... par kgb93
Source avec Zip Source avec une capture PAGINATION + FICHIER CSS par profdi
Source avec Zip Source avec une capture SYSTEME D'AUTHENTIFICATION PHP AVEC PROTÉCTION KEYLOGGER par mtrix000

 Sources en rapport avec celle ci

CLASSE DE GESTION DE "VARIABLES GLOBALES D'ENVIRONNEMENT" par pifou25
UPLOADER DES FICHIER DANSUN DOSSIER, SÉCURISÉ AVEC MOT DE PA... par raizzo
COMPTEUR DE VISITES SUR FICHIER par pierreSabatier
Source avec Zip Source avec une capture A-ANNONCES VERSION PHP 5 par cod57
CONTOURNER LA LIMITE DE TAILLE DES FICHIERS IMPOSÉE PAR CERT... par kurt67

Commentaires et avis

Commentaire de webdeb le 16/01/2007 18:43:40

Il est un peu crade ton code...

1/ Les balises PHP c'est <?php et non <?
2/ On ne met pas de guillemets ou d'apostrophes autour des nombres

Commentaire de superpok le 16/01/2007 19:06:31

okay sa roule, tu prends le point !

Commentaire de malalam le 18/01/2007 08:07:10 administrateur CS

Superpok => ce que te dit Webdeb est parfaitement juste concernant le tag de départ : mettre <?php au lieu de <? assure la compatibilité du code sur tou les serveurs (ton code, en l'état, plantera sur les miens).
Et ça :
if ($i == "10") $deb = '0';if ($i == "100") $deb = '';
c'est effectivement très moyen.
Au pire :
if ($i === 10 || $i === 1000) {
    $deb = '';
}

Commentaire de caviar le 19/01/2007 20:53:12

intéressant comme astuce ...
ya pas une autre astuce pour couper automatiquement le fichier lors de l'upload ... histoire de passer outre le time max pour l'exe des scripts ?

Commentaire de superpok le 20/01/2007 14:47:41

heu caviar, si jai compris ce que demande, je ne pense pas que sa soit possible.
et ce n'est pas tout les jour qu'on upload un fichier de plus de 800mo (environ 1h45 de connexion pour moi). [2h max chez free]
Apres si ta seulement 1mb en upload je comprends que tu apprecierais plus de simplicité.

Commentaire de superpok le 20/01/2007 14:54:23

Pour les autres, sachez que je viens du language C et que le php ne m'interesse que tres peu. Voila pourquoi j'ai si peu de consideration pour les details dont vous me faite part.

Commentaire de codefalse le 24/01/2007 16:22:48 administrateur CS

Superpok, tu dit "venir du language C" et tu arrive à proposer un code du genre :
if ($i == "10") $deb = '0';if ($i == "100") $deb = '';
???
mais !!! elles marchaient au moin tes applications ?!

Pourquoi prendre de haut les commentaires qu'on te fait ? tu n'es pas un dieu en ma connaissance et ton code le prouve ...

Commentaire de alkasar le 30/01/2007 12:08:04

bonjour. je n'y connais rien a php et pas grand chose à la programmation ;) mais j'avais besoin d'un tel script pour uploader des gros fichiers chez Free et je suis content de l'avoir trouvé. Merci Google. Ca marche.

Une question sur BUF_MAX a 10 000 000. Ca correspond a quoi ? c'est pas la taille max en octets car j'ai pu envoyer un fichier morcelé par tranches de 10Mo.
quelle est en réalité la taille maxi des morceaux de fichiers splités avec HJsplit (HJSplit s'exprime en Ko ou en Mo)

Autre suggestion : il n'y aurait pas moyen d'améliorer ce script pour qu'il assemble automatiquement les fichiers avec extension .001, .002, etc. dans le répertoire. A priori on fait pas ça souvent et il n'y a que peu de risque d'erreurs. Ca éviterait d'avoir à modifier $file dans le script a chaque fois.

une dernière option : effacer automatiquement les temporaires .001, .002, etc. quand l'assemblage s'est bien terminé.

En tout cas merci pour ce script qui m'a permis d'envoyer mon fichier :D

Commentaire de alkasar le 01/02/2007 00:46:50

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 ;)

Commentaire de superpok le 21/02/2007 22:15:09

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.

Commentaire de codefalse le 21/02/2007 22:26:55 administrateur CS

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 :)

Commentaire de alkasar le 21/02/2007 22:48:34

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<BR>";

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

/* si pas de fichier .001 trouvé, exit */
if(!$existe001) die("<BR><BR>*** PAS DE FICHIER .001 TROUVE ***");

/* verication que le fichier résultant n'existe pas déjà !!! */
if (file_exists($fichier_a_assembler)) die("<BR><BR>*** 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.<BR>";

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

fclose($handle2);

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

?>

Commentaire de superpok le 01/04/2007 16:52:34

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

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

split et la lecture de fichier [ par Nifhell ] Salut à tous!!Bon alors voilà j'essaie de créer un espace membre avec un fichier log qui contient tout les mots de passe et les noms de membre... ceci Lecture d'un fichier.txt [ par MAZALEYRAT ] Sujet : Probleme de lecture d'un fichier de type.txt avec PHPBonjour,Je me casse la tête depuis quelques jours sur la lecture d'un fichier .txt (que m Peut-on assembler des fichier en php? [ par mailliam ] Bonjour à tous, Voici mon problème, mon hébergeur autorise jusqu'à 60 Go de fichiers, seulement chaque fichier envoyé par FTP ne peut pas dépasser 48 PHP, Media player et split [ par bigbik ] Bonjour, Pour les besoins d'un site j'ai un script qui liste le contenu d'un répertoire contenant des fichiers audios et les affiche sous forme de l Fichier Cache WSDL introuvable - Utilisation SOAP WebServices [ par KarlyTos ] Bonjour, PlateForme : WampServer 2.1 Pour pouvoir faire appel a des WebServices en PHP, je place la ligne suivante dans mon code : [code=php] $monS XLHHttpRequest ( domDocXML ) : envoi d'un fichier [ par MasterCent ] Dans un script vbs, j'ai besoin d'envoyer un fichier xml à un serveur web. J'ai bien pensé ceci : XMLHttpRequest.open ( "PUT" , strUrl , false ) XM [BAR] extraction de données vers BDD [ par Crusher33 ] Bonjour ! Voilà le truc : Je possède une grosse archive (~54000 fichiers) de tablature guitar pro (fichier en .gp3 .gp4 .gp5 etc... celon les versio je voulais supprimer un fichier [ par fatben ] Bonjour je voudrais supprimer de fichiers qui sont ds ma table fichiers mais rien ne se passe lorsque le clique sur "X" est ce que quelqu'un pourra Se servir d'un fichier txt d'une "base de paramètres" [ par spacedelta ] Bonjour, je suis un utilisateur de Joomla! qui voudrait faire son site perso SANS joomla!, phpbb3, phpboost, easyphp,... en faisant tout le code à la [powershell]Traitement de fichier [ par lakcil ] Bonjour la communauté!! Je ne sais pas si mon post est dans le bon forum. Voilà mon problème. Je suis débutant en powershell et je galère depuis des


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,967 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales