IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Téléchargement php incomplet [PHP 5.5]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2013
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Juin 2013
    Messages : 37
    Par défaut Téléchargement php incomplet
    Bonjour à tous,

    J'ai besoin de créer un script de téléchargement pour mon site, mais je rencontre un soucis.
    Le script fonctionne mais le téléchargement se termine à environ 95% de la taille du fichier se qui à donc en conséquence de rendre le fichier corrompu.

    Voici mon script :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    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
    107
    108
    109
    110
    111
    112
    113
     
    @ignore_user_abort(false);
    error_reporting(E_ALL);
    ini_set("display_errors", 1);
    // désactivation compression GZip
    if (ini_get("zlib.output_compression")) {
    	ini_set("zlib.output_compression", 0);
    }
     
    session_start();
     
    $link= new stdClass;
    $link->name = 'ubuntu-15.10-desktop-amd64.iso';
    $link->size = '1177550848';
    $link->link = 'http://releases.ubuntu.com/15.10/ubuntu-15.10-desktop-amd64.iso';
     
    $extension = pathinfo($link->name, PATHINFO_EXTENSION);
     
    		$newName = $search->slug.'.www.mon-site.com.'.$extension;
     
    		switch($extension) {
    	        case "pdf":
    	            $ctype = "application/pdf";
    	            break;
    	        case "exe":
    	            $ctype = "application/octet-stream";
    	            break;
    	        case "zip":
    	            $ctype = "application/zip";
    	            break;
    	        case "doc":
    	            $ctype = "application/msword";
    	            break;
    	        case "xls":
    	            $ctype = "application/vnd.ms-excel";
    	            break;
    	        case "ppt":
    	            $ctype = "application/vnd.ms-powerpoint";
    	            break;
    	        case "gif":
    	            $ctype = "image/gif";
    	            break;
    	        case "png":
    	            $ctype = "image/png";
    	            break;
    	        case "jpeg":
    	            $ctype = "image/jpg";
    	            break;
    	        case "jpg":
    	            $ctype = "image/jpg";
    	            break;
    	        case "mp3":
    	            $ctype = "audio/mpeg";
    	            break;
    	        case "wav":
    	            $ctype = "audio/x-wav";
    	            break;
    	        case "mpeg":
    	            $ctype = "video/mpeg";
    	            break;
    	        case "mpg":
    	            $ctype = "video/mpeg";
    	            break;
    	        case "mpe":
    	            $ctype = "video/mpeg";
    	            break;
    	        case "mov":
    	            $ctype = "video/quicktime";
    	            break;
    	        case "avi":
    	            $ctype = "video/x-msvideo";
    	            break;
    	        case "src":
    	            $ctype = "plain/text";
    	            break;
    	        default:
    	            $ctype = "application/force-download";
    	    }
     
    		// fermeture de la session
    		session_write_close();
     
    		set_time_limit(0);
     
    		header("Content-Description: File Transfer");
    		header("Content-Type: application/force-download");
    		header("Content-Type: application/octet-stream");
    		header("Content-Type: application/download");
     
    		header('Content-Transfer-Encoding: binary');
    		header('Accept-Ranges: bytes');
    		header('Content-Disposition: attachment; filename='.$newName);
    		header("Cache-control: must-revalidate");
     		header('Pragma: public');
    		header("Expires: 0");
    		header('Content-Length: ' . $link->size);
    		header ("Content-type: " . $ctype);
    		header('Connection: close');
     
    		ob_end_flush();
     
    		$chunksize = 1 * (1024 * 1024); // how many bytes per chunk 
    		if ($link->size > $chunksize) { 
    		  	$handle = fopen($link->link, 'rb'); 
    		  	$buffer = ''; 
    		  	while (!feof($handle)) {
    		    	$buffer = fread($handle, $chunksize); 
    		    	echo $buffer;
    		    	flush(); 
    		  	} 
    		  	fclose($handle);
    		  	exit();
    		}
    Je vous ais mis un lien de téléchargement annexe pour que vous puissiez tester, mais sinon es-ce que quelqu'un aurait une solution pour ce soucis ?

    Merci cordialement

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    J'ai testé ton code et il fonctionne bien chez moi.
    Le seul détail est que $search n'était pas défini.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre averti
    Inscrit en
    Juin 2013
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Juin 2013
    Messages : 37
    Par défaut
    Oui $search est une variable d'une requête sql ^^
    Moi aussi en locale sa fonctionne mais dès que je le met sur mon hébergeur qui est donc : OVH sa ne fonctionne plus

    PS: j'ai tester sur OVH, easy-hebergement, O2switch

  4. #4
    Membre très actif Avatar de zaza576
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2013
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2013
    Messages : 175
    Par défaut
    Hello,

    vérifie que ton serveur Web n'a pas fixé de limite de upload / download de fichiers en Mo.
    Si tu es chez un hébergeur, il se peut que tu sois limité à un maximum.
    Teste chez toi en local avec un serveur wamp par exemple et configure ton fichier de configuration pour adapter à la limite de download que tu souhaiterais !

  5. #5
    Membre averti
    Inscrit en
    Juin 2013
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Juin 2013
    Messages : 37
    Par défaut
    Salut, j'y ais pensé aussi mais le soucis c'est que sa ne bug jamais au même moment.
    Sa peu planter a 300mo ou 700 ou 1go

  6. #6
    Membre très actif Avatar de zaza576
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2013
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2013
    Messages : 175
    Par défaut
    Hello !

    Ca donne quoi tes configs suivantes ?

    - post_max_size
    - max_file_upload
    - max_execution_time
    - max_input_time
    - memory_limit

    Tu as déjà reproduit ce bug en local sur ta machine ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Compteur de téléchargement PHP Mysql
    Par Shilong dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 16/06/2011, 22h45
  2. panier de téléchargement php
    Par lina22 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 5
    Dernier message: 21/07/2009, 15h27
  3. Téléchargement PDF incomplet
    Par loucasse dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 04/03/2009, 16h56
  4. Script de téléchargement PHP et IE6
    Par tibom dans le forum Langage
    Réponses: 1
    Dernier message: 28/10/2008, 09h36
  5. Flux XML généré par le script PHP incomplet
    Par L.nico dans le forum Langage
    Réponses: 1
    Dernier message: 29/06/2008, 15h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo