REASSEMBLER FICHIER SUR SERVEUR

webdeb Messages postés 488 Date d'inscription samedi 5 avril 2003 Statut Membre Dernière intervention 31 mars 2009 - 16 janv. 2007 à 18:43
superpok Messages postés 6 Date d'inscription dimanche 25 avril 2004 Statut Membre Dernière intervention 1 avril 2007 - 1 avril 2007 à 16:52
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/41138-reassembler-fichier-sur-serveur

superpok Messages postés 6 Date d'inscription dimanche 25 avril 2004 Statut Membre Dernière intervention 1 avril 2007
1 avril 2007 à 16:52
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
cs_alkasar Messages postés 3 Date d'inscription mardi 30 janvier 2007 Statut Membre Dernière intervention 21 février 2007
21 févr. 2007 à 22:48
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.";

?>
codefalse Messages postés 1123 Date d'inscription mardi 8 janvier 2002 Statut Modérateur Dernière intervention 21 avril 2009 1
21 févr. 2007 à 22:26
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 :)
superpok Messages postés 6 Date d'inscription dimanche 25 avril 2004 Statut Membre Dernière intervention 1 avril 2007
21 févr. 2007 à 22:15
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.
cs_alkasar Messages postés 3 Date d'inscription mardi 30 janvier 2007 Statut Membre Dernière intervention 21 février 2007
1 févr. 2007 à 00:46
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 ;)
cs_alkasar Messages postés 3 Date d'inscription mardi 30 janvier 2007 Statut Membre Dernière intervention 21 février 2007
30 janv. 2007 à 12:08
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
codefalse Messages postés 1123 Date d'inscription mardi 8 janvier 2002 Statut Modérateur Dernière intervention 21 avril 2009 1
24 janv. 2007 à 16:22
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 ...
superpok Messages postés 6 Date d'inscription dimanche 25 avril 2004 Statut Membre Dernière intervention 1 avril 2007
20 janv. 2007 à 14:54
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.
superpok Messages postés 6 Date d'inscription dimanche 25 avril 2004 Statut Membre Dernière intervention 1 avril 2007
20 janv. 2007 à 14:47
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é.
cs_caviar Messages postés 329 Date d'inscription samedi 4 janvier 2003 Statut Membre Dernière intervention 29 mars 2015 2
19 janv. 2007 à 20:53
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 ?
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
18 janv. 2007 à 08:07
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 = '';
}
superpok Messages postés 6 Date d'inscription dimanche 25 avril 2004 Statut Membre Dernière intervention 1 avril 2007
16 janv. 2007 à 19:06
okay sa roule, tu prends le point !
webdeb Messages postés 488 Date d'inscription samedi 5 avril 2003 Statut Membre Dernière intervention 31 mars 2009 4
16 janv. 2007 à 18:43
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
Rejoignez-nous