Bonjour,
Comment limiter dans le temps un téléchargement ?
Merci
Bonjour,
Comment limiter dans le temps un téléchargement ?
Merci
Comme ça :
C'est quoi cette question ? Tu peux détailler ? Tu veux que ça coupe même si le téléchargement n'est pas fini ? Tu veux que ça télécharge nécessairement dans un temps imparti ? Quelle techno ? La couleur de ta voiture ?
Possibilité pour un internaute de pouvoir télécharger un fichier donné pendant 2 ou 3 jours.
=> html, php
PS:
_Mac_, je te demanderais d'être plus correct stp.La couleur de ta voiture ?
Ah, tu es piéton, désolé. L'humour, connaîs pas ?
C'est un très gros fichier à télécharger et tu veux que le visiteur puisse le télécharger sur plusieurs jours, c'est ça ? Le problème que tu voudrais gérer ce sont les reprises de téléchargement ?
Je pense qu'il veux dire que l'on peut télécharger le fihier (peu importe la taille ... meme 10ko) pendant par eemple deu jourset apres le lien disparait ...
Ah, oui !!! Effectivement, j'avais pas du tout compris
Dans ce cas, y a plusieurs variantes possibles. L'une d'entre elle :
- Qq'1 demande un téléchargement. Le fichier à télécharger est identifié, il est copié (ou on fait un lien symbolique dessus) dans un répertoire temporaire nouvellement créé.
- Une URL de téléchargement est renvoyée au client et il télécharge.
- Régulièrement (cela veut dire qu'il faut mettre un scheduler en place ou un mécanisme façon cron ou webcron), un processus est lancé. Ce processus regarde les répertoires temporaires qui on été créés. Il compare la date de création du répertoire avec la date du jour - un certain délai. Si le délai est dépassé, alors ce processus supprime le répertoire temporaire.
Les variantes se jouent sur la façon de calculer les URL de téléchargement et de les protéger, i.e. faire en sorte que seule la personne habilitée puisse télécharger le fichier, etc.
1. comment on fait un lien symbolique dessus dans un répertoire temporaire nouvellement créé ?
Ca dépend de l'OS et du langage de programmation. Par exemple, sous Windows, on a la notion de raccourci mais ce n'est pas aussi puissant que les liens symboliques. L'idée c'est de ne pas avoir à copier un fichier tout en sécurisant (ou limitant) son accès. Mais tu peux ne pas avoir à faire de liens symboliques : comme je disais, tout dépend de la façon de créer les URL vers les fichiers téléchargeables. Par exemple, les URL peuvent être http://.../telecharger?fid=codefichi...telechargement. Dans ce cas, le programme caché derrière /telecharger utilise les paramètres d'URL pour vérifier la validité de la clé et renvoyer le fichier identifié par fid. L'idée du répertoire et liens symboliques c'est une alternative pas forcément meiulleure, d'ailleurs. C'est juste que c'est la première idée qui m'est venue
Je travaille avec apache => php & html.
Serveur : http://www.infomaniak.ch/
J'utilise pour l'instant un script pour cacher le lien.
Mon pb est que les fichier télécharger sont payants, donc je cherche un moyen pour pas qu'on ne puisse pas télécharger N fois un fichier et q'un rigolo réussisse à télécharger d'autre fichiers.
L'idée du rep avec lien symbolique me parait bien pour ça.
Mais comment fait-on pour créer un fichier avec un lien symbolique ?
Merci
En PHP, c'est la fonction link.
Par rapport à ce que tu dis, le fait de faire un lien symbolique ça ne va pas facilement permettre d'empêcher de télécharger un fichier plusieurs fois : si tu donnes directement l'URL du fichier dans son répertoire temporaire sans passer par une moulinette PHP (i.e. l'URL est http://.../tempdir/monfichier.pdf par exemple et pas http://.../download.php?id=123456), le fichier va être téléchargeable par n'importe qui connaissant l'URL dans le lapse de temps de validité du téléchargement. En gros, avec ce système, tu ne peux pas empêcher plusieurs personnes de télécharger le fichier. Je ne sais pas si je suis clair
http://.../tempdir/monfichier.pdf ou http://.../download.php?id=123456) => ça change rien du point de vu sécurité, le fichier sera tjs téléchargeable qq soit la tête du lien.
Ensuite, avec lien symbolique, c vrai que pendant 24h(par exemple), un seul fichier sera téléchargeable N fois mais pas les autres et pas pas non téléchargeable à "vie".
PS :
La personne qui a payé pour avoir le fichier (donc à le lien), rien ne l'empeche de faire des copie de fichier (sauf le copyright).
Sauf si on imagine que id=123456 correspond à un enregistrement en base de données indiquant le fichier à télécharger et que le script download.php, une fois le téléchargement fini, invalide ou supprime cet enregistrement. Mais effectivement, une fois qu'il a récupéré le fichier, rien n'empêche l'utilisateur d'en faire des copies.
Un numero au hasard... pk pas.
Mais comment savoir si le téléchargement est fini (et que le fichier est entirèrement téléchager) ?
Tout est dans download.php : il récupère l'ID dans l'URL et vérifie qu'il est valide. Il récupère le chemin vers le fichier à télécharger. Il lit le fichier et l'envoie au navigateur avec readfile et quand c'est fini, il invalide l'entrée dans la base de données. Tout se fait à la suite, en fait, rien de compliquer là-dedans :
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 <?php // Verification de l'ID ... // Calcul du chemin du fichier $chemin = ... // Lecture et envoi du fichier au navigateur header('Content-Type: application/octet-stream'); header('Content-Length: ' . filesize($chemin)); header('Content-Disposition: attachment; filename=' . basename($chemin)); readfile($chemin); // On desactive l'ID ... ?>
Partager