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 :

rafraîchir une page web lorsque le serveur reçoit des fichiers par requête POST


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur R&D

    Informations forums :
    Inscription : Avril 2013
    Messages : 5
    Par défaut rafraîchir une page web lorsque le serveur reçoit des fichiers par requête POST
    Bonjour,
    Débutant en programmation web, je me demande comment indiquer à un serveur PHP de rafraichir une page web lorsqu'il reçoit un fichier (jpg) par une requête POST.
    Mon serveur Apache est sur Mac avec MAMP.Ci-dessous les codes PHP.
    Le script "photos.php" affiche les images et se rafraîchit automatiquement toutes les 10 secondes.
    Je voudrais qu'il ne se rafraîchisse uniquement lorsque une nouvelle image arrive.

    Côté client, une requête est envoyée en Python, lorsqu'un nouveau fichier est disponible:
    Code Python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    # send file to server using POST request
    files = {'userfile': (filename, open(filename, 'rb')),} # 192.168.1.10:8081 est mon serveur local
    response = requests.post('http://192.168.1.10:8081/upload.php', files=files)
    print(response)

    Côté serveur PHP:
    fichier "index.html"
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <html>
    <head>
    </head>
    <body>
    	<!-- Le type d'encodage des données, enctype, DOIT être spécifié comme ce qui suit -->
    	<form enctype="multipart/form-data" action="upload.php" method="post">
      		<!-- MAX_FILE_SIZE doit précéder le champ input de type file -->
      		<input type="hidden" name="MAX_FILE_SIZE" value="30000" />
      		<!-- Le nom de l'élément input détermine le nom dans le tableau $_FILES -->
      		Envoyez ce fichier : 
      		<input name="userfile" type="file" />
      		<input type="submit" value="Envoyer le fichier" />
    	</form>
    </body>
    </html>

    fichier "upload.php"
    Code PHP : 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
    <html>
    <body>
    <?php
    $uploaddir = 'img/';
    $uploadfile = $uploaddir.basename($_FILES['userfile']['name']);
    echo $_FILES['userfile']['name'];
    echo '<pre>';
    if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) 
    {
        echo "Le fichier est valide, et a été téléchargé
               avec succès. Voici plus d'informations :\n";
    } else 
    {
        echo "Attaque potentielle par téléchargement de fichiers.
              Voici plus d'informations :\n";
    }
     
    echo 'Voici quelques informations de débogage :';
    print_r($_FILES);
    echo '</pre>';
    ?>
    </body>
    </html>

    fichier "photos.php"
    Code PHP : 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
    <html>
    <body>
    <?php  
    // Demonstrate the use of header() function 
    // to refresh the current page 
    echo "Page will refresh in every 10 seconds</br></br>"; 
     //function will refresh the page  
    // in every 10 second 
    echo header("refresh: 10");
    $imgs = glob("img/*.jpg", GLOB_BRACE);
    $i=0;
    foreach ($imgs as $img) {
    	if (($i%8) == 0)
    	{
    		echo "</br>";
    	}
    	$i += 1;
        echo "<img src='$img' height=100 alt=''>";
    }
    ?>
    </body>
    </html>

    Votre aide est la bienvenue!

  2. #2
    Membre expérimenté Avatar de Trehinos
    Homme Profil pro
    Analyste développeur PHP
    Inscrit en
    Novembre 2012
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Analyste développeur PHP
    Secteur : Distribution

    Informations forums :
    Inscription : Novembre 2012
    Messages : 100
    Par défaut
    PHP ne sait pas "rafraichir une page web" puisqu'il est exécuté côté serveur...
    En revanche, un script en PHP peut surveiller ce qu'il se passe sur le serveur et constater un changement d'état (un fichier est apparu).

    Javascript, lui, peut rafraichir la page, interroger le serveur, mais il ne peut pas contrôler l'état du serveur...

    Avec un script JS qui interroge le serveur en AJAX toutes les 10 secondes (setInterval), un script PHP qui renvoie l'état ("upload récent" ou "rien n'a changé"), le JS peut interpréter la réponse du serveur et choisir de rafraichir ou non avec window.location.href voire location.reload().

    A chaque upload d'une image, il faut que le script PHP qui gère l'upload fasse passer le serveur de l'état "rien n'a changé" à "upload récent", de telle sorte que la prochaine fois qu'il est interrogé, le serveur réponde bien qu'il a été mis à jour et que le client (JS) doit recharger la page (ou l'élément).


    Le passage de l'état "upload récent" à "rien n'a changé" peut se faire au chargement de la page en question.


    Voilà voilà, c'est assez abstrait, y'a plus qu'à implémenter =)

Discussions similaires

  1. [ASP] Recharger une page web depuis le serveur
    Par Loko dans le forum ASP.NET
    Réponses: 3
    Dernier message: 24/10/2012, 13h10
  2. Recupérer une page web sur un serveur HTTPS
    Par guis14 dans le forum Général Java
    Réponses: 6
    Dernier message: 23/05/2008, 12h29
  3. Enregistrer une page web sur le serveur
    Par guigui69 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 20/05/2008, 11h35
  4. Affichage d'une page web sur le serveur Apache
    Par marcandre dans le forum Apache
    Réponses: 9
    Dernier message: 04/02/2008, 18h10
  5. Rafraîchir une page WEB en C# (et AJAX?)
    Par saiyuke dans le forum ASP.NET
    Réponses: 4
    Dernier message: 17/03/2007, 22h08

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