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

    17 Juin 2006  

      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 17 Juin 2006
# Catégorie Compatibilité Nombre de vues Site Archive
   Fichiers-Repertoires PHP 4, PHP 5, PHP 7 10 136  

       Code Source PHP


 
 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    
                               
<?php
/**************************************************************************************/
/*
     Titre  : Evitez les restrictions de taille de fichier de votre hébergeur                                            
                                                                                                                          
     URL    :  
     https://phpsources.net/code/php/fichiers-repertoires/174_evitez-les-restrictions-de-taille-de-fichier-de-votre-hebergeur
     Auteur         : kurt67                                                                                              
     Date edition   : 17 Juin 2006                                                                                        
*/
/**************************************************************************************/
/* 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/
?> 

...  Manuel PHP - Fonctions du code source

   php.net  Description Versions PHP OUTIL
   die Alias de la fonction exit() PHP 4, PHP 5, PHP 7
   echo Affiche une chaîne de caractères PHP 4, PHP 5, PHP 7
   fclose Ferme un fichier PHP 4, PHP 5, PHP 7
   feof Teste la fin du fichier PHP 4, PHP 5, PHP 7
   fgets Récupère la ligne courante sur laquelle se trouve le pointeur du fichier PHP 4, PHP 5, PHP 7
   file_exists Vérifie si un fichier ou un dossier existe PHP 4, PHP 5, PHP 7
   fopen Ouvre un fichier ou une URL PHP 4, PHP 5, PHP 7
   fwrite Écrit un fichier en mode binaire PHP 4, PHP 5, PHP 7
   header Envoie un en-tête HTTP PHP 4, PHP 5, PHP 7
   readfile Affiche un fichier PHP 4, PHP 5, PHP 7
   strlen Calcule la taille d'une chaîne PHP 4, PHP 5, PHP 7
   strstr Trouve la première occurrence dans une chaîne PHP 4, PHP 5, PHP 7


  • L'ajout de commentaire est libre et ne demande pas d'inscription,
  •   invité

nous vous encourageons à contribuer à l'utilisation de PHP en ajoutant vos remarques.

[1]

  • ...

    Invité

    01 Mars 2011 à 10:34

    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é.

  Fichiers-Répertoires [ 65 ]

2 fonctions PHP pour compresser et décompresser un fichier .gz Afficher tout le contenu d'un fichier Afficher une citation au hasard Afficher une ligne d'un fichier de manière aléatoire Ajouter des lignes au début de vos fichiers textes Calcul du nombre de lignes par fichier et total d'un projet Calculer la taille d'un dossier. Changer le mode d'un fichier par FTP Class php pour uploader des fichiers Compresser vos fichiers css et délivrer vos pages internet plus rapidement Compte le nombre de ligne Compter les fichiers d'un répertoire Compteur de pages (fichier texte) Connaitre la taille en bytes des répertoires et sous répertoires Copie du contenu d'un dossier en conservant l'arborescence Copie récursive de dossier Création d'un nouveau fichier Création d'un nouveau répertoire Création massive de fichiers zip Créer un répertoire récursivement Déplace le pointeur de lignes Déplacer un dossier Déplacer un fichier Efface un répertoire et son contenu Effacer un repertoire et ses sous repertoires   Evitez les restrictions de taille de fichier de votre hébergeur Forcer le téléchargement d'un fichier Gestion des pages en cache Indique si le repertoire existe ou le crée Informations sur les fichiers Limiter la vitesse de download Lire le contenu d'1 fichier Liste 1 répertoire Liste de diffusion (1) : Ajout à  une liste Liste de diffusion (2) : Liste de contacts Liste de diffusion (3) : Suppression d'un contact Liste de diffusion (4) : Recherche d'un contact Liste répertoires et sous-répertoires Lister un répertoire par ordre alphabétique en php Lister un répertoire selon une extention Mettre du code PHP dans un fichier avec l'extension HTML Modifications dans plusieurs fichiers Modifier le contenu d'un fichier texte Nettoyer un répertoire de fichiers temporaires Obtenir (rapidement) la taille d'un fichier distant via HTTP Obtenir l'extention d'un fichier d'une url Pour imprimer une page Recherche chaine de caractère Redirection massive avec Status: 301 Moved Permanently Rediriger une URL sans le sous domaine vers une url avec le sous domaine Régule la vitesse de téléchargement d'un fichier local Renomer l'extention de fichiers Renommage et déplacement massif Renverser un fichier pour le reecrire en partant de la fin Suppression d'un élément dans un fichier Supprimer un fichier Supression d'un repertoire Telecharger des fichiers zip avec compteur Uploader des fichers médias ( images et vidéos ) Uploader un fichier avec global à  OFF Utilisateurs (1) : Vérifie les informations Utilisateurs (2) : Modifie le mot de passe d'un utilisateur Utilisateurs (3) : Suppression d'un utilisateur Utilisateurs (4) : Ajout d'un utilisateur [PHP 4] Créer un dossier vide si inexistant, purger ce répertoire sinon