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 :

Envoi de fichier au navigateur


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 27
    Points : 11
    Points
    11
    Par défaut Envoi de fichier au navigateur
    Bonjour,
    En faite je souhaite envoyer un fichier au navigateur mais pas depuis le fichier en cours , il faudrait que par exemple j’execute un fichier php qui enverrait le fichier mais je ne voie pas du tout comment faire (je ne veut pas de include ou fonction similaire) (peut etre avec la fonction exec() mais je ne voit pas du tout comment ça marche)
    J'aimerais aussi savoir pourquoi quand ont déclare les headers par exemple header("Content-Type: application/force-download"); pourquoi on a aucune erreur ?
    Et je ne voie pas comment sécuriser la reprise de téléchargement (avec $_SERVER['HTTP_RANGE']) car si l'utilisateur envoie plusieurs requête il pourrait télécharger sans limitation je ne voie pas comment sécuriser ça ?

    Merci d'avance

  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
    Points : 44 155
    Points
    44 155
    Par défaut
    Un simple readfile() envoi le fichier vers le navigateur.
    Il faut évidemment que rien d'autre avant n'ait été envoyé, pas même un BOM ; ton problème de header() vient surement de là.

    Pour limiter les telechargements tu peux le faire au niveau de l'utilisateur si tes utilisateurs sont authentifiés ou par l'ip.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 27
    Points : 11
    Points
    11
    Par défaut
    Salut,
    Oui je connais la fonction readfile mais je voulais savoir comment pouvoir envoyer un fichier depuis un autre fichier que celui en cours (sans que celui ci sois inclut dans le fichier en cours)
    Que signifie BOM ? De toute fasons je n'envoie vraiment rien au navigateurs avant les headers.
    Pour la restriction des téléchargement je voit comment faire mais c'est pour la reprise de téléchargement (avec ) , car par exemple si cette requête est renvoyé plusieurs fois même si je limite la vitesse ( au lancement du téléchargement) l'utilisateur pourrait télécharger a plus que sa vitesse qu'il aurait le droit.
    J'ai aussi un autre problème avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header("Content-Type: application/force-download");
    qui m'envoie aussi ma page html avec mon fichier txt que je télécharge.

    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
    if (!empty($_POST['download']))
    		{
    			if (empty($_SERVER["HTTP_RANGE"]))
    			{
     
    					$temp_file = tempnam(sys_get_temp_dir(),"FOO");
     
    					if ($temp_file == FALSE)
    					{
    						exit();
    					}
     
    					$handle = fopen($temp_file,"w+");
     
    					// Ecriture
    					fwrite($handle, $pour_tab);
    					fclose($handle);
     
    					set_time_limit(0);
     
    					if (ini_get("zlib.output_compression")) 
    					{
    						ini_set("zlib.output_compression", "Off");
    					}
     
    					session_write_close();
    					header("Cache-Control: no-cache, must-revalidate");
    					header("Cache-Control: post-check=0,pre-check=0");
    					header("Cache-Control: max-age=0");
    					header('Content-Length: '.filesize($temp_file).'');
    					header('Content-MD5: '.base64_encode(md5_file($temp_file)));
    					header("Pragma: no-cache");
    					header("Expires: 0");
     
    					header("Content-Type: application/force-download");
    					if (!empty($data['title']))
    					{
    						header('Content-Disposition: attachment; filename="'.$data['title'].'.txt"');
    					}
    					else
    					{
    						header('Content-Disposition: attachment; filename="'.$_GET['title'].'.txt"');
    					}
     
    					$s_dwn = "1";
     
    					// ouvre le fichier
    					$file = fopen($temp_file, "rb");
     
    					while(false != fread($file, $download_rate))
    					{
    						// envoie le fichier au navigateur
    						print fread($file, round($s_dwn * 1024));
    						sleep(1);
    					}
    					// (remplacer par readfile)
     
    					set_time_limit(30);
    					fclose($file);
    					unlink($temp_file);
    			}
    			else
    			{
    				$1 = 'erreur ...';
    			}
    			}
    			else
    			{
    			}
    		}
     
    // Mon code HTML
    Merci.

Discussions similaires

  1. envoi fichier serveur-->navigateur
    Par Le fut dans le forum Langage
    Réponses: 20
    Dernier message: 15/03/2007, 15h30
  2. [debutant] envoi de fichier
    Par djchow dans le forum MFC
    Réponses: 8
    Dernier message: 21/03/2005, 16h57
  3. [Débutant] Envoi de fichier par socket
    Par zapho dans le forum Entrée/Sortie
    Réponses: 13
    Dernier message: 26/05/2004, 18h58
  4. [C#] Envoi de fichier xml
    Par minnieBis dans le forum ASP.NET
    Réponses: 16
    Dernier message: 25/05/2004, 14h28
  5. [Socket]envoie de fichier!!!
    Par SamDaKap dans le forum C++Builder
    Réponses: 5
    Dernier message: 20/11/2002, 08h07

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