Se connecter avec
S'enregistrer | Connectez-vous

[Php - Java] Lancement d'un téléchargement

Dernière réponse : dans Programmation

Bonjour tout le monde ! Je travaille actuellement sur une rubrique de téléchargement, et rencontre quelques difficultées quant au lancement "automatique" du téléchargement ...

Dans une page "telechargement.php", je possède une image servant de bouton (sans formulaire, mais uniquement avec un lien vers cette meme page en passant cette fois ci un paramettre supplémentaire "action=ajout-succes-telechargement").
On récupère la variable "action" :
Si celle si est égale à "ajout-succes-telechargement" alors on effectue une incrémentation dnas la base de données et l'on charge le fichier demandé.

J'ai donc matérialisé cette condition par le code suivant :

  1. if($action == "ajout_succes_telechargement");
  2. {
  3. //Incrémentation d'une valeure "succes" supplémentaire
  4. $req_ajout_succes = mysql_query("UPDATE dr_telechargement SET succes=succes+1 WHERE id=\"$id_telechargement\"");
  5. //Lancement du téléchargement
  6. include $lien;
  7. }


L'incrémentation marche sans problème sous IE, mais sous Firefox, le script incrémente une valeur supplémentaire égale a 2 au lieu de 1 ... Serait il lancé deux fois ?

Pour le lancement du téléchargement, je n'ai à vrai dire, aucune idée de la fonction php ou code javascript à utiliser (le "include" ne semble pas marcher).

Je vous remercie donc d'avance pour l'attention prêtée à ce message, et la réponse éventuelle qui en découlera =)
Merci !
Lassé par la pub ? Créez un compte

- A la place de l'include essayes :
if (file_exists($lien)) // Je suppose que $lien contient le nom du fichier à télécharger
{
header('Content-type: image/jpeg'); // Ici j'indique le format image jpeg, cf. le fichier mimes.type
header('Content-Disposition: attachment; filename="'.rawurldecode($lien)).'"';
readfile($lien);
exit;
}

Merci Warp6 pour ta réponse et ta solution !
Malheureusement je n'arrive pas à faire fonctionner ce bout de code correctement ... La variable "$lien" comprend en effet le nom du fichier, puisqu'elle correspond à l'url du fichier à télécharger. Une petite précision est cependant nécessaire, Dois je référencer dans une balise header tous les formats qui vont correspondrent au fichier à télécharger ?

Comme ici :
  1. header('Content-type: image/jpeg');


Merci encore Warp6 !

Pour les formats, j'ai copié le fichier mime.types (que tu trouveras dans le dossier d'apache) dans le dossier de ma page.

Le code devient standard pour les extensions de fichier :
header('Content-type: '.qmimetype($liens));

- avec code de qmimetype :

function qmimetype($file)
{
$ext=array_pop(explode('.',$file));
foreach(file('mime.types') as $line)
if(preg_match('/^([^#]\S+)\s+.*'.$ext.'.*$/',$line,$m))
return $m[1];
return 'application/octet-stream'; // Par défaut
}
Lassé par la pub ? Créez un compte
Tom's guide dans le monde