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 :

readfile - Comment télécharger simplement un fichier image au format jpg ?


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Juillet 2015
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2015
    Messages : 12
    Points : 6
    Points
    6
    Par défaut readfile - Comment télécharger simplement un fichier image au format jpg ?
    Bonjour à tous,

    Je tente de télécharger un fichier image au format .jp avec le script PHP ci-dessous et le fichier se télécharge mais l'image est illisible. Une idée ?

    Merci d'avance.
    Stéphane

    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
    <?php
     
    header( 'content-type: text/html; charset=utf-8' );
    $targetPath="DATA/TempUpload/LBSMaintenanceNePasSupprimer/";
     
    $file ="Pour_test.jpg";
    $targetFile=$targetPath . stripslashes($file);	
     
    //Verifier si allow_url_fopen  est sur on (php.ini)
    $handle = fopen($targetFile, "r");
     
     
    if (file_exists($targetFile)) {
     
        header('Content-Description: File Transfer');
        header('Content-Type: image/jpg');
    	header('Content-Type: application/octet-stream');   
    	header('Content-Disposition: attachment; filename="'.basename($targetFile).'"');
        header('Expires: 0');
        header('Cache-Control: must-revalidate');
        header('Pragma: public');
        header('Content-Length: ' . filesize($handle));
     
        readfile($handle);
        exit;
    }
    else
    {
     
    	echo "Fichier non trouvé : ".$targetFile;
     
    };
     
    ?>

  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
    l'argument de readfile() est le nom du fichier, pas un identifiant fopen.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Juillet 2015
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2015
    Messages : 12
    Points : 6
    Points
    6
    Par défaut
    Merci beaucoup pour cette première réponse.

    J'ai corrigé le script en remplaçant l'identifiant retourné par fopen() par le nom du fichier mais l'image téléchargée est toujours illisible.

    Voici le nouveau 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
    <?php
     
    header( 'content-type: text/html; charset=utf-8' );
    $targetPath="DATA/TempUpload/LBSMaintenanceNePasSupprimer/";
     
    $file ="Pour_test.jpg";
    $targetFile=$targetPath . stripslashes($file);	
     
    //Verifier si allow_url_fopen  est sur on (php.ini)
    $handle = fopen($targetFile, "r");
     
     
    if (file_exists($targetFile)) {
     
        header('Content-Description: File Transfer');    
    	header('Content-Type: application/octet-stream');   
    	header('Content-Disposition: attachment; filename="'.basename($file).'"');
        header('Expires: 0');
        header('Cache-Control: must-revalidate');
        header('Pragma: public');
        header('Content-Length: ' . filesize($file));
     
        readfile($file);
        exit;
    }
    else
    {
     
    	echo "Fichier non trouvé : ".$targetFile;
     
    };
     
    ?>

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Juillet 2015
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2015
    Messages : 12
    Points : 6
    Points
    6
    Par défaut
    Avec ce script, cela fonctionne...c'est déjà un bon début :

    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
    <?php
     
    header( 'content-type: text/html; charset=utf-8' );
    $targetPath="DATA/TempUpload/LBSMaintenanceNePasSupprimer/";
     
    $file ="Pour_test.jpg";
    $targetFile=$targetPath . stripslashes($file);	
     
    //Verifier si allow_url_fopen  est sur on (php.ini)
    $handle = fopen($targetFile, "r");
     
     
    if (file_exists($targetFile)) {
     
        header('Content-Description: File Transfer');    
    	header('Content-Type: application/octet-stream');   
    	header('Content-Disposition: attachment; filename="'."lklkllk.jpg".'"');
        header('Expires: 0');
        header('Cache-Control: must-revalidate');
        header('Pragma: public');
        header('Content-Length: ' . filesize($targetFile));
     
        readfile($targetFile);
        exit;
    }
    else
    {
     
    	echo "Fichier non trouvé : ".$targetFile;
     
    };
     
    ?>

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Juillet 2015
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2015
    Messages : 12
    Points : 6
    Points
    6
    Par défaut grrr...Je ne m'en sort pas !
    Finalement, je n'arrive plus à faire fonctionner le script...qui a fonctionné.
    Quelqu'un pourrait-il me dépanner ou me mettre sur la voix parceque là...je ne vois plus.

    Merci.
    Stéphane

    Voici le code qui ne fonctionne pas...quelque chose m’échappe.

    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
     
    <?php
     
    header( 'content-type: text/html; charset=utf-8' );
     
     
    $targetFile=$targetPath . stripslashes("DATA/FichierRetour/Test/Pourtest.jpg");	
     
    //Verifier si allow_url_fopen  est sur "on" (php.ini)
    $handle = fopen("DATA/FichierRetour/Test/Pourtest.jpg", "r");
     
     
    if (file_exists("DATA/FichierRetour/Test/Pourtest.jpg")) {
     
        header('Content-Description: File Transfer');    
    	header('Content-Type: application/octet-stream');   
    	header('Content-Disposition: attachment; filename="'."Pourtest.jpg".'"');
        header('Expires: 0');
        header('Cache-Control: must-revalidate');
        header('Pragma: public');
        header('Content-Length: ' . filesize("DATA/FichierRetour/Test/Pourtest.jpg"));
     
        readfile("DATA/FichierRetour/Test/Pourtest.jpg");
        exit;
    }
    else
    {
     
    	echo "Fichier non trouvé : "."DATA/FichierRetour/Test/Pourtest.jpg";
     
    };
     
    ?>

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

Discussions similaires

  1. [Lazarus] Ouvrir des fichiers image au format TIF
    Par ChPr dans le forum Lazarus
    Réponses: 22
    Dernier message: 15/03/2014, 18h50
  2. Envoi d'image sous format jpg
    Par hercl dans le forum Internet
    Réponses: 0
    Dernier message: 29/12/2007, 12h13
  3. Réponses: 1
    Dernier message: 29/11/2005, 10h15
  4. Comment lire un fichier image
    Par Charlemagne dans le forum DirectX
    Réponses: 9
    Dernier message: 12/03/2004, 00h22

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