Vous êtes ici Codes PHP et MySQL > Fichiers-Répertoires > Evitez les restrictions de taille de fichier de...

 

Evitez les restrictions de taille de fichier de votre hébergeur

Description du projet:
Vous remarquerez sans doute que de nos jours bon nombre d'hébergeur (gratuits surtout) interdisent les fichiers de plus de 2mo (free.fr), 500ko (awardspace.com), etc... Vous remarquerez également que c'est extrêment ennuyeux de les couper, parce qu'en plus votre visiteur doit avoir le ou les programmes adaptés pour les reconstituer et c'est souvent très lourd. Je vous propose donc une solution simple, très simple même (23 lignes de code à vrai dire). Jetez donc un coup d'oeil au code puis aux explications finales pour mettre ce code en oeuvre correctement (en fait vous devrez comme même spliter vos fichier mais vos visiteurs pourront télécharger un beau fichier complet et en un morceau, si si regardez plus bas).

Dernière explications (après le code normalement, mais bon):Un dernier conseil quelque peut astucieux: pour votre fichier file.truc, vous pouvez creer un dossier s'appelant file.truc et contenant les différentes parties. Vous y mettrez aussi la seconde partie du code (celle qui réassemble) avec la bonne valeur de $file dans un fichier nommé "index.php". Ainsi quand le visiteur ira sur http://votresite.com/file.truc le téléchargement se lancera tout de suite... comme si c'était un vrai fichier!
Ensuite vous pouvez modifier le code selon vos besoin: modifier le header (si c'est une image et que le header définit une image cette image peut s'afficher directement dans le navigateur). Il peut aussi être utilisé comme sécurité pour ceux qui utilisent allopass.
D'ailleurs je n'ai pas mis de démo et je n'en ai pas l'intention parce que je suis limité au niveau de la bande passante.
 
kurt67
Site de l'auteur voir
[2] sources en PHP voir
Code vu 7667 fois
Enregistré le 17 Juin 2006
  • Digg ce code sur digg.com
  • Bookmark ce code sur del.icio.us
  • Bookmark ce code sur Google
  • Bookmark ce code sur Yahoo
  • Ajoute Evitez les restrictions de taille de fichier de votre hébergeur
  • Partage ce code sur Facebook
 
 
 
 

Code Source


01.
02.
03.
04.
05.
06.
07.
08.
09.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
 
<?php
/******************************************************************************/
/*                                                                            */
/*                       __        ____                                       */
/*                 ___  / /  ___  / __/__  __ _____________ ___               */
/*                / _ \/ _ \/ _ \_\ \/ _ \/ // / __/ __/ -_|_-<               */
/*               / .__/_//_/ .__/___/\___/\_,_/_/  \__/\__/___/               */
/*              /_/       /_/                                                 */
/*                                                                            */
/*                                                                            */
/******************************************************************************/
/*                                                                            */
/* Titre          : Evitez les restrictions de taille de fichier de votre...  */
/*                                                                            */
/* URL            : http://www.phpsources.org/scripts174-PHP.htm              */
/* Auteur         : kurt67                                                    */
/* Date édition   : 17 Juin 2006                                              */
/* Website auteur : http://www.phpsources.org                                 */
/*                                                                            */
/******************************************************************************/

/* Dans un premier temps il vous faut découper votre fichier. Je ne vous
cache pas que la variable $file contient le nom de votre fichier à couper.
C'est ici qu'on se rend compte de l'ambiguité de la situation. Vous ne pouvez
pas uploader votre fichier (votre hébergeur refuse, le fichier est trop gros).
Vous pouvez alors utiliser un programme pour couper vos fichier.
Avec une petite recherche google vous devriez trouver rapidement
(HJsplit pour les windoziens ou bien KJsplit ou gnusplit pour le unixiens,
les purs). Mais si vous avez php en localhost et votre
site sur un hébergeur gratuit vous pouvez vous servir du code suivant.
Important à noter: pour un fichier "file.truc" les parties doivent s'appeler
"file.truc.000", "file.truc.001", etc... En commançant à 000 et en continuant
de un en un. Sinon le réassembleur ne trouveras pas les différentes parties
*/
// Variables à définir
$file "file.rar";
// Taille maximale des parties en octet
//(1ko=1024octets et 1mo=1024ko=1024*1024octets)
$cutsize 1024*500;
 
 
// Code
$handle fopen ($file"rb")
    or die ("Lecture impossible !");
$i 0;
while (!feof($handle))
{
    $istring $i;
    $partstring "";
    while (strlen($istring) < 3)
        $istring "0".$istring;
    while(strlen($partstring)<$cutsize && !feof($handle))
    {
        $partstring .= fgets($handle$cutsize-strlen($partstring)+1);
    }
    $partfile fopen($file.".".$istring"wb")
               or die("Erreur fatale: impossible d'ouvrir $file.$istring");
    fwrite($partfile$partstring)
               or die("Erreur fatale: impossible d'écrire $file.$istring");
    fclose($partfile);
    echo "Fichier $i écrit<br />\n";
    $i++;
}
fclose($handle);
?> 

<?php
/* La partie du code la plus importante: celle qui réassemble
le fichier $file des parties "$file.000", "$file.001", etc...
Et les donne en téléchargement à l'utilisateur.
*/
// Votre fichier
$file "file.rar";
 
// S'il n'y a pas la première partie ça ne sert à rien
if (!file_exists($file.".000"))
    die("Partie 000 de $file non trouvée");
 
// Microsoft internet explorer qui fait chier parce qu'il ne respecte pas les
// normes oblige à rajouter du code
if (strstr($HTTP_USER_AGENT,"MSIE"))
    $attachment "";
else
    $attachment " attachment;";
// Vous pouvez changer le type de fichier si vous le voulez
header("Content-type: application/octet-stream");
header("Content-Disposition:$attachment filename=$file");
header("Content-Description: File Transfer");
 
// La boucle qui assemble les fichiers
$istring "000";
$i 0;
while(file_exists($file.".".$istring))
{
    // Que c'est beau readfile()...
    // les parties ne sont pas ouvertes donc ça ne
    // devrait pas trop prendre de temps même pour les gros fichiers
    readfile($file.".".$istring);
    $i++;
    $istring $i;
    while (strlen($istring) < 3)
        $istring "0".$istring;
}
// C'est fini... A vous de jouer --> -http://phpmagic.awardspace.com/
?> 
 

Fonctions du code

: Ouvre un fichier ou une URL - (PHP 4, PHP 5)
: Alias de la fonction exit() - (PHP 4, PHP 5)
: Teste la fin du fichier - (PHP 4, PHP 5)
: Calcule la taille d'une chaîne - (PHP 4, PHP 5)
: Récupère la ligne courante sur laquelle se trouve le pointeur du fichier - (PHP 4,...
: Écrit un fichier en mode binaire - (PHP 4, PHP 5)
: Ferme un fichier - (PHP 4, PHP 5)
: Affiche une chaîne de caractères - (PHP 4, PHP 5)
: Vérifie si un fichier ou un dossier existe - (PHP 4, PHP 5)
: Trouve la première occurrence dans une chaîne - (PHP 4, PHP 5)
: Envoie un en-tête HTTP - (PHP 4, PHP 5)
: Affiche un fichier - (PHP 4, PHP 5)
Commentaire
Bonjour!  Ta source aparêt en 1er sur google quand on tape "découper fichier php", bravo =)
En effet, je cherchai une source similaire pour le problème que tu évoques, mais dans mon cas il ne le résoud que partielement: 
Je cherche a mettre en place un systeme de gestion de fichier, et ces fichier comprenne des vidéo. Si sa ne tennai qu'a moi, j'utiliserai un des logiciel que tu évoques pour faire la découpe, mais c'est pas pour moi, mon gestionnaire doit inclure cette fonctionnalité.
C'est quand même bête de prendre un serveur dédié juste pour pouvoir uploader des vidéos, (qui au meilleur des cas se fera 3 4 foix par ans en ce qui les concernent xD)
Pense tu qu'il sois possible en PHP (ou au pire en JS) de découper les fichier? Puis de les réassembler en interne? Car les vidéo doivent être luent en streaming...et je crois pas que ce sois possible a partir d'un fichier découpé.
Je cherche bien sur de mon coté.
 
Ajouter un commentaire
Code de sécurité

Attention: Les champs marqués d'une étoile * sont obligatoires
 
Librairie PHP

Connexion

 
 

Fichiers-Répertoires

 
 

PHP

 
 
 
 
    Offres d'emploi

Plus de 500 offres d'emploi PHP/MySQL

Offres d'emploi
 
    Editeur PHP
 
        Publicité