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

JavaScript Discussion :

Evenement lors d'un téléchargement de fichier


Sujet :

JavaScript

  1. #1
    Membre éclairé
    Homme Profil pro
    Analyste développeur
    Inscrit en
    Juin 2010
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste développeur

    Informations forums :
    Inscription : Juin 2010
    Messages : 317
    Par défaut Evenement lors d'un téléchargement de fichier
    Bonjour à tous,

    Sur mon site, j'ai des liens de téléchargements et j'aimerais récupérer l'évènement lorsqu'il y a un téléchargement en cours ou lorsque le téléchargement de la personne est terminé peut importe, pour enregistrer dans ma base de données le nombre de téléchargements des personnes.

    Est-ce qu'il y aurait un évènement JavaScript qui pourrait faire cela ?

    Merci d'avance.

    John.

  2. #2
    Membre éclairé
    Homme Profil pro
    Analyste développeur
    Inscrit en
    Juin 2010
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste développeur

    Informations forums :
    Inscription : Juin 2010
    Messages : 317
    Par défaut
    Bon j'ai trouvé la solution et il n'y aucuns liens avec JavaScript, tout se fait en PHP.

    Il suffit de ne pas mettre directement vos fichiers dans le href. Il faut feinter en mettant dans votre lien de téléchargement une autre destination vers un fichier php, par exemple le serveur, puis d'envoyer en get, le lien du fichier à télécharger :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<a href="serveur.php?file=' . $fichier . '">'

    Bon moi j'ai fais un echo parce que je suis dans une page php, donc à adapter si vous le faite en HTML... Vous pouvez aussi envoyer plusieurs données dans la variable file en faisant comme ceci :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<a href="serveur.php?file=' . $fichier . '&idtab=' . $idtab . '">'

    Ensuite sur la page serveur.php, il suffit de tester si la variable file existe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (isset ( $_GET ['file'] )) {
    Et à partir de là, vous récupérez le lien du fichier et d'autres données si besoin :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $name = $_GET ['file'];

    Il ne reste plus qu'à faire des requêtes SQL pour insérer dans votre base données le nombre de téléchargements. Faites un update du champ si il existe une ligne dans votre base de données, sinon vous faites un insert et par défaut vous mettez 1. Il est possible de faire en SQL, pour incrémenter un champ :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE telechargement SET champ=champ+1

    A la fin de toutes ces requêtes, vous pouvez enfin faire une redirection vers votre téléchargement, pour pouvoir télécharger le fichier.

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    header ( "Location: $name" );

  3. #3
    Invité
    Invité(e)
    Par défaut
    lorsqu'il y a un téléchargement en cours ou lorsque le téléchargement de la personne est terminé peut importe
    ta solution ne marche pas, tu ne vas jamais décrémenter le nombre de téléchargements en cours...
    Tu as le nombre de téléchargements demandés, mais tu sais jamais quand ils terminent.

    Ya au moins un moyen.
    Par exemple, côté php, tu peux utiliser readfile.

    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
    <?php
    $downloadStarted++;//we asked a download
    $file = 'monkey.gif';
     
    if (file_exists($file)) {
        header('Content-Description: File Transfer');
        header('Content-Type: application/octet-stream');
        header('Content-Disposition: attachment; filename='.basename($file));
        header('Content-Transfer-Encoding: binary');
        header('Expires: 0');
        header('Cache-Control: must-revalidate');
        header('Pragma: public');
        header('Content-Length: ' . filesize($file));
        ob_clean();
        flush();
        readfile($file);
        $downloadStarted--;//we ended the download
        exit;
    }
    ?>
    Il reste la question de savoir ce qu'il se passe si l'utilisateur interromp le download...

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 661
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 661
    Billets dans le blog
    1
    Par défaut
    et juste en passant par une variable de session ?
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  5. #5
    Invité
    Invité(e)
    Par défaut
    et juste en passant par une variable de session
    peux-tu developper?

  6. #6
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 661
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 661
    Billets dans le blog
    1
    Par défaut
    ben au lieu de stocker dans une table, ne serait il pas plus simple de tenir un etat dans une variable de session ?
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  7. #7
    Invité
    Invité(e)
    Par défaut
    Je m'attendais a ce que tu developpes comment tu ferais avec une variable de session.

    Pour moi, une variable de session, cest un grosier $_SESSION, qui correspond a un utilisateur.

    Je vois pas comment tu peux maintenir de cette maniere un compteur global sur le nombre de telechargements en cours.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE telechargement SET champ=champ+1
    montre bien qu'il s'agit d'un nombre global et non par personne.

  8. #8
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 661
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 661
    Billets dans le blog
    1
    Par défaut
    Ha global ... :red: j'avais zappé ce point de détail
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  9. #9
    Membre éclairé
    Homme Profil pro
    Analyste développeur
    Inscrit en
    Juin 2010
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste développeur

    Informations forums :
    Inscription : Juin 2010
    Messages : 317
    Par défaut
    Non SpaceFrog à raison, il y a un compteur pour chaque personne et sur chaque fichier. Seulement, j'ai mis une requête SQL à adapter selon les besoins. J'ai fais un système de téléchargement de tablatures, donc j'ai besoin de l'id de la personne, l'id de la tablature et le nombre de DL.

    Personnellement j'ai fais comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $requete = "UPDATE telechargement SET nb_telechargement = nb_telechargement+1 WHERE idpersonne=" . $idpers . "AND idtablature=" . $idtab;
    pg_query ( $requete );
    Donc la première requête que j'ai mis c'est juste pour dire qu'il faut faire un update, après on est censé savoir faire une requête SQL selon ses besoins.

    Après mon code marche très bien, certes on ne sait pas lorsque le téléchargement est terminé, mais pour ce que je veux faire ça me suffit largement ^^.

    Mais si vous avez une idée, je suis preneur.

  10. #10
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 661
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 661
    Billets dans le blog
    1
    Par défaut
    ben si c'est pas personne et qu'il n'y a pas de lien entre les users une var de session suffit
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 04/10/2013, 12h01
  2. Lag lors d'un téléchargement de fichier local
    Par Johngtrs dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 04/06/2012, 20h20
  3. [XL-2003] Evenement lors de l'ouverture d'un fichier Excel
    Par RussellD dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 10/05/2010, 17h20
  4. Réponses: 9
    Dernier message: 15/04/2009, 17h32
  5. Pb nom du fichier lors d'un téléchargement forcé
    Par wolfe dans le forum Langage
    Réponses: 2
    Dernier message: 14/02/2007, 10h49

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