Problème script téléchargement

Rechercher

Problème script téléchargement

Par Chucky2401  -  6 reponses  -  Le 07/02/2012 14:23  -  Editer  - 

Bonjour à tous !

Depuis peu je me suis vu attribuer le codage d'un site web par le président d'un club d'un sport.

Or j'ai quelques soucis avec le script de téléchargement des documents, en pdf en règle général.

Voici le code de la page de téléchargement :

<?php
/*
  telecharger.php
  Copyright 2011 Les 3 Mousquetons <les3mousquetonsboulazacois@gmail.com>
  Version 1.0 - C2401
  This program is free software; you can not redistribute it and/or modify
  it under the terms of the Creative Commons BY-NC-ND. */
/*
 * Début du code source
 */
session_start();
include('includes/config.php');
include('includes/fonctions.php');
$id = intval(strip_tags(trim($_GET['id'])));
connexionbdd();
$reponse = mysql_query('SELECT * FROM upload WHERE id="'.$id.'"') or die(mysql_error());
$donnees = mysql_fetch_array($reponse);
/*/echo '<pre>';
print_r($donnees);
echo '</pre>';/**/
header('Content-Type: '.$donnees['type'].'; charset=utf-8'); //Transfert en binaire (fichier)
header('Content-Disposition: attachment; filename="'.$donnees['name'].'"'); //Nom du fichier
header('Content-Length: '.$donnees['size'].''); //Taille du fichier
$files = ROOTPATH.'/upload/'.$donnees['filename'];
/*/echo $files.'<br />';
echo $donnees['name'].'<br />';
echo $donnees['size'].'<br />';
echo $donnees['description'].'<br />';
echo $donnees['filename'].'<br />';
echo $donnees['type'];/**/
/*
 * Partie sur le compteur de téléchargement
 */
//ouverture du fichier
$name = $donnees['filename'];
$name = preg_replace('#([a-z0-9._-]+)\.pdf#isU', '$1.cpt' ,$name);
$name = 'upload/cpt/'.$name;
if(!file_exists($name)){
    $compteur = fopen($name, 'a+');
    fputs($compteur, '1');
}
else{
    $compteur = fopen($name, 'r+');
    $actuel = fgets($compteur);
    $new = $actuel + 1;
    fseek($compteur, 0);
    fputs($compteur, $new);
}
//fermeture du fichier
fclose($compteur);
readfile($files);
?>
De plus, le compteur de téléchargement ne fonctionne pas. Je suis pour l'instant en local.
Lorsque la fenêtre de téléchargement apparaît j'obtiens une taille de fichier nul.

Cordialement

 

Réponses apportées à cette discussion

Par Cyrano  -  Le 07/02/2012 16:35  -  Haut de page  - 

Pour l'erreur de taille au téléchargement, ça me semble curieux : as-tu vérifié les données en base pour un fichier donnéet comparé avec le fichier lui-même ?

il serait aussi pratique que tu montres ce qu'affichent les print_r que tu as commenté histoire d'avoir une idée de ce qui est reçu avant l'envoi vers le client.

Quant au compteur, c'est surprenant de voir un compteur en fichier texte au lieu d'un UPDATE sur une colonne dans la table même des uploads prévue à cet effet... mais bon à la limite, c'est sans grande importance. Par contre il faudrait comparer entre avant et après sur le fichier en question, vérifie en particulier la date de dernière modification de ce fichier, tu sauras au moins s'il a été ouvert et modifié ou pas du tout.

 
Par Chucky2401  -  Le 07/02/2012 17:22  -  Haut de page  - 

Alors, pour les données en base, je pense que tu parles de la taille du fichier. Pour l'instant, je n'ai pas encore mis en place le script d'upload, donc c'est moi qui entre les infos manuellement par PHPMyAdmin. L'info sur la taille est vérifié par passage dans la console sous Linux, car je suis sous Linux. Bref, c'est infos sont bonnes.

 

Pour les print_r, voici les résultats :

 

Array
(
    [0] => 8
    [id] => 8
    [1] => Convoc AG 2012.pdf
    [name] => Convoc AG 2012.pdf
    [2] => 34177
    [size] => 34177
    [3] => Convocation à l'Assemblé Général de 2012
    [description] => Convocation à l'Assemblé Général de 2012
    [4] => 2012-02-06
    [date] => 2012-02-06
    [5] => 06022012_4f2fa2921991b.pdf
    [filename] => 06022012_4f2fa2921991b.pdf
    [6] => application/pdf
    [type] => application/pdf
    [7] => 0
    [counter] => 0
)
http://escalade.fr/upload/06022012_4f2fa2921991b.pdf
Convoc AG 2012.pdf
34177
Convocation à l'Assemblé Général de 2012
06022012_4f2fa2921991b.pdf
application/pdf

Ben, pour le compteur, j'ai suivi un tuto sur le Site Du Zéro, qui utilisait un fichier texte, et je crois avoir lu qu'il était préférable, pour soulager la bande passante. Bref, peu importe comme tu dis.

Pour ce qui est de la date de modification, celle-ci reste inchangé. Et quand c'est un fichier compteur qui n'existe pas, il n'est même pas créer.

 
Par Cyrano  -  Le 07/02/2012 18:01  -  Haut de page  - 

À tout hasard, est-ce que le ilen direct sur le fichier avec l'url générée (http://escalade.fr/upload/06022012_4f2fa2921991b.pdf) fonctionne ?

 
Par Chucky2401  -  Le 07/02/2012 18:22  -  Haut de page  - 

Oui il fonctionne correctement, car je vois le fichier qui s'affiche dans mon navigateur.

 
Par Chucky2401  -  Le 09/02/2012 12:00  -  Haut de page  - 

Toujours pas d'idée d'où proviens le problème ?

Le président du club m'a demandé de finir le site pour le moi prochain, donc il faut plus trop que je tarde.

Merci d'avance ! Cordialement

 
Par Chucky2401  -  Le 09/02/2012 13:50  -  Haut de page  - 

J'ai remplacé ces deux lignes :

 

$name = 'upload/cpt/'.$name;
$files = ROOTPATH.'/upload/'.$donnees['filename'];

Par :

$name = './upload/cpt/'.$name;$files = './upload/'.$donnees['filename'];

Car, je me suis rendu compte par un file_exist() que le script ne trouvait pas le fichier envoyer.

Maintenant cela fonctionne.

Or, le compteur en fichier texte, ne fonctionne toujours pas, et j'ai tenté une mise à jour de la BDD par un UPDATE pour faire un compteur, qui ne se mets pas à jour. Voici les deux lignes :

$counter = $donnees['counter']++;
mysql_query('UPDATE upload SET counter='.$counter.' WHERE id="'.$id.'"') or die(mysql_error());

 

PS : il m'a fallut insister 3 à 4 fois pour insérer du code à chaque fois sur le site...

 

Ajouter une réponse à la discussion

Seuls les membres connectés sont autorisés à poster dans les forums !

Identifiez-vous
Join |  ID/MDP? |