Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

UPLOAD DE PLUS DE 200KO SUR FREE


Information sur la source

Catégorie :Fichier / Disque Niveau : Débutant Date de création : 13/02/2005 Vu / téléchargé: 7 898 / 575

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

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

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

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Commentaires et avis

signaler à un administrateur
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 ++

signaler à un administrateur
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 !

signaler à un administrateur
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 ;-)

signaler à un administrateur
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.

signaler à un administrateur
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').

signaler à un administrateur
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" :)

signaler à un administrateur
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 ++

signaler à un administrateur
Commentaire de iubito le 21/02/2005 14:04:29

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

signaler à un administrateur
Commentaire de Anthomicro le 21/02/2005 14:25:46

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

signaler à un administrateur
Commentaire de iubito le 21/02/2005 16:05:58

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

signaler à un administrateur
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

signaler à un administrateur
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...

signaler à un administrateur
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

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version

Photothèque Nouveau !



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
Temps d'éxécution de la page : 0,452 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.