begin process at 2010 02 10 14:27:26
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Fichier / Disque

 > UPLOAD DE PLUS DE 200KO SUR FREE

UPLOAD DE PLUS DE 200KO SUR FREE


 Information sur la source

Note :
10 / 10 - par 1 personne
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Fichier / Disque Niveau :Débutant Date de création :13/02/2005 Vu / téléchargé :8 028 / 577

Auteur : mondrone

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

 Description

J'ai pus voir en cherchant sur le forum que beaucoup (moi y comprit) avaient des problèmes pour l'upload de fichier sur les serveurs de Free. Des solutions ont été proposées, mais celles qui marchent (utilisant en général la fonction copy) ne prennent pas les fichiers de plus de 200Ko.
J'ai donc tenté de réaliser une fonction qui permet toute taille de fichier. Son principe est simple : uploader des parties de 200Ko puis les rassembler sur le serveur.
Il faut juste prendre du temps et le logiciel Split.
Si vous trouvé des optimisations, merci de me les faire parvenir.
P.S : Le code n'est pas super optimisé et le design est franchement à revoir.

Source

  • <?if(!isset($_POST['nombre']))
  • {echo "<form action=\"index.php\" method=\"POST\" enctype=\"multipart/form-data\">
  • <center><p>Entrez Le nom du fichier compressé :</p>
  • <p><input type=\"text\" name=\"nomf\"></p>
  • <p>Entrez le nombre de parties :</p>
  • <p><input type=\"text\" name=\"nombre\"></p>
  • <p>Quel est le 1° fichier ?</p>
  • <p><input type=\"file\" name=\"nom\"></p>
  • <input type=\"submit\" value=\"Envoyer\" enctype=\"multipart/form-data\"></center>
  • </form>";
  • }
  • else
  • {$nombre=$_POST['nombre'];
  • if(isset($_POST['cmpt']))
  • $cmpt=$_POST['cmpt'];
  • else
  • $cmpt=0;
  • $nomf=$_POST['nomf'];
  • // Pour écrire d'abord
  • $f = gzopen($nomf.$cmpt.".gz", "wb"); // on ouvre le fichier pour écriture avec un taux de compression de 9
  • $nom=$_FILES['nom']['tmp_name'];
  • $f2=fopen($nom,"rb");
  • $ascii=1;
  • while(!feof($f2))
  • {$ascii=fgetc($f2);
  • gzwrite($f, $ascii); // on écrit dans le fichier
  • }
  • gzclose($f); // on ferme enfin le fichier
  • if($cmpt<$nombre-1)
  • {echo "<form action=\"index.php\" method=\"POST\" enctype=\"multipart/form-data\">
  • <center><p><input type=\"hidden\" name=\"nombre\" value=\"".$nombre."\"></p>
  • <p><input type=\"hidden\" name=\"cmpt\" value=\"".++$cmpt."\"></p>
  • <p><input type=\"hidden\" name=\"nomf\" value=\"".$nomf."\"></p>
  • <p>Quel est le ".($cmpt+1)."° fichier ?</p>
  • <p><input type=\"file\" name=\"nom\"></p>
  • <input type=\"submit\" value=\"Envoyer\" enctype=\"multipart/form-data\"></center>
  • </form>";
  • }
  • else
  • {$cmpt=0;
  • $f=fopen($nomf,"wb");
  • while($cmpt<$nombre)
  • {$f2=gzopen($nomf.$cmpt.".gz","rb");
  • $ascii=1;
  • while(!gzeof($f2))
  • {$ascii=gzgetc($f2);
  • fwrite($f,$ascii);
  • }
  • gzclose($f2);
  • unlink($nomf.$cmpt.".gz");
  • $cmpt++;
  • }
  • fclose($f);
  • echo "<center>Upload du fichier terminée !!!</center>";
  • }
  • }
  • ?>
<?if(!isset($_POST['nombre']))
	{echo "<form action=\"index.php\" method=\"POST\" enctype=\"multipart/form-data\">
	<center><p>Entrez Le nom du fichier compressé :</p>
	<p><input type=\"text\" name=\"nomf\"></p>
	<p>Entrez le nombre de parties :</p>
	<p><input type=\"text\" name=\"nombre\"></p>
	<p>Quel est le 1° fichier ?</p>
	<p><input type=\"file\" name=\"nom\"></p>
	<input type=\"submit\" value=\"Envoyer\" enctype=\"multipart/form-data\"></center>
</form>";
	}
else
	{$nombre=$_POST['nombre'];
	if(isset($_POST['cmpt']))
		$cmpt=$_POST['cmpt'];
	else
		$cmpt=0;
	$nomf=$_POST['nomf'];
	// Pour écrire d'abord
	$f = gzopen($nomf.$cmpt.".gz", "wb"); // on ouvre le fichier pour écriture avec un taux de compression de 9
	$nom=$_FILES['nom']['tmp_name'];
	$f2=fopen($nom,"rb");
	$ascii=1;
	while(!feof($f2))
		{$ascii=fgetc($f2);
		gzwrite($f, $ascii); // on écrit dans le fichier
		}
	gzclose($f); // on ferme enfin le fichier
	if($cmpt<$nombre-1)
		{echo "<form action=\"index.php\" method=\"POST\" enctype=\"multipart/form-data\">
	<center><p><input type=\"hidden\" name=\"nombre\" value=\"".$nombre."\"></p>
	<p><input type=\"hidden\" name=\"cmpt\" value=\"".++$cmpt."\"></p>
	<p><input type=\"hidden\" name=\"nomf\" value=\"".$nomf."\"></p>
	<p>Quel est le ".($cmpt+1)."° fichier ?</p>
	<p><input type=\"file\" name=\"nom\"></p>
	<input type=\"submit\" value=\"Envoyer\" enctype=\"multipart/form-data\"></center>
</form>";
		}
	else
		{$cmpt=0;
		$f=fopen($nomf,"wb");
		while($cmpt<$nombre)
			{$f2=gzopen($nomf.$cmpt.".gz","rb");
			$ascii=1;
				while(!gzeof($f2))
					{$ascii=gzgetc($f2);
					fwrite($f,$ascii);
					}
			gzclose($f2);
			unlink($nomf.$cmpt.".gz");
			$cmpt++;
			}
		fclose($f);
		echo "<center>Upload du fichier terminée !!!</center>";
		}
	}

?>


 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources de la même categorie

CONVERSION ET TEXTE DES TAILLE DE DONNÉES À PARTIRE D'UNE TA... par slhuilli
Source avec Zip EFFACER LES FICHIERS IMAGES ( .PNG ), D'UN RÉPERTOIRE TEMPS ... par christophe0511
COURTE ET SIMPLE FONCTION RÉCURSIVE POUR LECTURE DE RÉPERTOI... par mbdx
Source avec Zip Source avec une capture GESTIONNAIRE DE FICHIERS | MYSQL PHP 5.X {NEMENTON PHP MANA... par Nementon
Source avec Zip Source avec une capture LISTE REPERTOIRE (DIR EN PHP) par mephistope

Commentaires et avis

Commentaire de Anthomicro le 13/02/2005 19:44:53

Salut,

voici ton code corrigé ;-)

Tout d'abord dans une CSS (à laquelle tu feras appel dans ton script php via un code html <link rel="stylesheet" href="style.css" media="screen" /> :

p{
text-align:center;
}

<?php
if(!isset($_POST['nombre']))
{
echo '<form action="index.php" method="post" enctype="multipart/form-data">
    <p style="text-align:center">Entrez Le nom du fichier compressé :</p>
    <p><input type="text" name="nomf" /></p>
    <p>Entrez le nombre de parties :</p>
    <p><input type="text" name="nombre" /></p>
    <p>Quel est le 1° fichier ?</p>
    <p><input type="file" name="nom" />
    <input type="submit" value="Envoyer" enctype="multipart/form-data" /></p>
</form>';
}
else
{
   $nombre=$_POST['nombre'];
    if(isset($_POST['cmpt']))
    {
        $cmpt=$_POST['cmpt'];
    }
    else
    {
        $cmpt=0;
    }
    $nomf=$_POST['nomf'];

    // Pour écrire d'abord
    $f = gzopen($nomf.$cmpt.'.gz', 'wb');// on ouvre le fichier pour écriture avec un taux de compression de 9

    $nom=$_FILES['nom']['tmp_name'];
    $f2=fopen($nom,"rb");
    $ascii=1;

    while(!feof($f2))
    {
        $ascii=fgetc($f2);
        gzwrite($f, $ascii); // on écrit dans le fichier
    }

    gzclose($f); // on ferme enfin le fichier

    if($cmpt<$nombre-1)
    {
     echo '<form action="index.php" method="post" enctype="multipart/form-data">
    <p><input type="hidden" name="nombre" value="',$nombre,'" /></p>
    <p><input type="hidden" name="cmpt" value="',++$cmpt,'" /></p>
    <p><input type="hidden" name="nomf" value="',$nomf,'" /></p>
    <p>Quel est le ',($cmpt+1),'° fichier ?</p>
    <p><input type="file" name="nom" />
    <input type="submit" value="Envoyer" enctype="multipart/form-data"></p>
</form>';
}
else
{$cmpt=0;
    $f=fopen($nomf,"wb");
    while($cmpt<$nombre)
    {
         $f2=gzopen($nomf.$cmpt.".gz","rb");
         $ascii=1;
          while(!gzeof($f2))
           {
               $ascii=gzgetc($f2);
               fwrite($f,$ascii);
            }
            gzclose($f2);
            unlink($nomf.$cmpt.".gz");
            $cmpt++;
        }

        fclose($f);
        echo '<p>Upload du fichier terminé !</p>';
        }
}
?>

a ++

Commentaire de mondrone le 13/02/2005 21:39:07

Merci. Il est vrai que je ne suis pas vraiment un expert en html. Je ne connait que les bases... Je n'utilise que rarement les feuilles de style !!

Sinon, si quelqu'un pouvait réussir à transformer ce code pour qu'il ne faille pas d'abord couper le fichier avec Split, mais que cela se fasse automatiquement, ça m'arangerait. Merci d'avance !

Commentaire de Anthomicro le 13/02/2005 22:18:40

Tu ne peux pas, il faut découper le fichier du côté du client ;-)

Commentaire de mondrone le 13/02/2005 22:29:02

J'ai tout de même des remarques à faire sur les corrections que tu as faites :
est-ce vraiment important de mettre

    if(isset($_POST['cmpt']))
    {
        $cmpt=$_POST['cmpt'];
    }
    else
    {
        $cmpt=0;
    }

à la place de

if(isset($_POST['cmpt']))
        $cmpt=$_POST['cmpt'];
    else
        $cmpt=0;

?

De même, l'identation d'un programme est-elle fixée à ce point ? (je parle de la convention, car je trouve plus clair ma manière d'{ et de } même si ça n'engage que moi !)

Enfin, le <?php et le <?, c'est quoi la différence exactement ?

(je tient à préciser que je débute en programmation php. Je programme surtout en langage C habituellement !)

Merci d'avance d'éclairer ma lanterne sur ces petit points sombres.

Commentaire de mondrone le 13/02/2005 22:31:08

Je viens de remarquer un petit détail : Le commentaire disant :
// on ouvre le fichier pour écriture avec un taux de compression de 9
est erroné puisque la compression est celle fixée par défaut ('wb').

Commentaire de Bricomix le 14/02/2005 02:51:37

mondrone : pour le "<?" ou le "<?php", il faut savoir que le "<?" pose des problèmes, la déclaration du XML se faisant avec "<?xml", l'interpréteur PHP ne fait pas la différence ;)

De ce fait, même si ce problème est facilement contournable, il est possible de désactiver l'utilisation du tag court dans les options de PHP ("<?"), donc, il vaut mieux utiliser "<?php" :)

Commentaire de Anthomicro le 14/02/2005 08:34:20

"J'ai tout de même des remarques à faire sur les corrections que tu as faites :
est-ce vraiment important de mettre

    if(isset($_POST['cmpt']))
    {
        $cmpt=$_POST['cmpt'];
    }
    else
    {
        $cmpt=0;
    }
"

Bah je trouve ça plus clair, après chacun fait comme il veut ;-)

a ++

Commentaire de iubito le 21/02/2005 14:04:29

L'upload est à 2 Mo sur free... (sur mes anciens sites comme mes nouveaux)

Commentaire de Anthomicro le 21/02/2005 14:25:46

Il s'est peut-être trompé dans le titre ;-)

Commentaire de iubito le 21/02/2005 16:05:58

bein autrefois (lol) c'était 200Ko il me semble...

Commentaire de dgdg le 13/06/2005 22:27:25

Salut,
C'est simple et efficace, je suis sur free et j'ai trop galéré pour trouver une solution à l'upload.
Merci à toi!!!!!!!!!!!!!!
Bonne prog

Commentaire de batou22003 le 16/11/2005 01:00:14

Et bien, c'est très rapide d'utilisation et le fichier est zippé.
Merci pour ton script.
Et bonne programmation...

Commentaire de Nico225 le 13/08/2007 14:13:19

Dans ma config (phpinfo()), j'ai aussi 2M comme taille maximum, mais au dessus de 200 Ko, ça bloque quand même :-(

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
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,546 sec (3)

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