Comment faire de lien temporaire pour un fichier téléchargeable
Je fais un projet pour une durée temporaire de lien de téléchargement pour moi de protéger le fichier de hotlinkers...
Je crois que c'est possible de le faire.. parce que nous savons tous que beaucoup de partage de fichiers site "ne veux pas mentionner toute"... le lien pour le fichier a l'expiration...
Ex.
Si je télécharge un fichier à partir de leur site, ils donnent un lien direct, cliquez sur à droite?
mais alors que le lien expirera à droite après quelques heures ou quelques minutes.
Comment devrais-je sais que le lien est périmé? Si je copie le même lien sur mon gestionnaire de téléchargement après une journée, il ne peut pas télécharger le même fichier.
Je l'ai déjà fait ce possible dans htaccess
.
Ex.
RewriteRule .*\.(rar|ZIP)$ http://domain.com [R,NC]
si ils ont copier le lien direct dans la barre d'adresse du navigateur, ils seront redirigés dans http://domain.com
Mais alors si ils ont copier le lien direct sur leur gestionnaire de téléchargement, le fichier sera téléchargé.
Si on poste le lien dans un autre site comme le site web du forum, blog, etc.,
et de demander au lecteur de copier et coller le lien dans leur gestionnaire de téléchargement, de sorte qu'ils puissent le télécharger directement.
C'est le problème que je veux éviter pour protéger mon fichier. Je fais cela à PHP, mais je ne peux pas la comprendre...
Votre aide est très apprécié.
OriginalL'auteur Vhanjan | 2012-09-25
Vous devez vous connecter pour publier un commentaire.
Utiliser un code comme ceci
ajouter à votre .fichier htaccess
Vous ne devriez pas l'utiliser .htaccess pour ce qu'il va devenir difficile à maintenir que vous avez plus de fichiers et des lieux différents.
OriginalL'auteur StaticVariable
Lien vers quelque chose comme
/downloads/abb76b3acbd954a05bea357144d614b4
, où abb... est une chaîne de caractères aléatoires comme un salée de hachage de l'heure actuelle. Lorsque vous rendre sur ce lien pour quelqu'un, de stocker la chaîne de caractères dans une table de base de données. Ce tableau pourrait ressembler à:Lorsque vous obtenez une demande à
/downloads/...
, regardez en haut de la chaîne aléatoire et envoyer le bon fichier. Si lecreated
timestamp est trop vieux, ne pas le faire. Utiliser une tâche cron pour nettoyer les anciennes lignes de la table, ou du moins idéalement, faire cela chaque fois que quelqu'un fait une demande pour/downloads/...
.OriginalL'auteur Ben Graham
La solution qui me vient à l'esprit est comme suit:
Si vous avez un tableau qui représentent fichier et par exemple FileModel vous pouvez enregistrer le nom du fichier, certains détails, la taille, aussi chemin d'accès au fichier dans votre système de fichiers et unique, qui peut être le résultat de md5 de certaines des données que vous choisissez pour elle repose sur quelques détails d'un fichier par exemple :
À chaque fois avant de laisser quelqu'un téléchargement de votre fichier, vous vérifiez si il y a une telle valeur unique dans votre tableau, si vous laissez donc quelqu'un de télécharger avec ur downloadFile méthode créée dans FileModel, mais juste avant que vous faites de nouvelles unique pour éviter tout plus de téléchargements
Si ce n'est pas une valeur unique dans ur la base de données alors que vous venez de montrer une erreur sur timeouted lien à l'utilisateur
Ici, je pase pour vous un exemple de prototype de l'action de laquelle vous pouvez commencer avec votre contrôleur:
Aussi, vous pouvez créer datetime champ où vous pouvez par exemple ajouter 1 jour à la date du jour et vérifier si le temps de le télécharger expiré.
OriginalL'auteur scx
celui que j'ai trouvé:
OriginalL'auteur T.Todua
je sais que cette vieille question, mais j'ai moyen de télécharger le fichier juste 1 fois, sans utiliser de base de données , moyen rapide 🙂
OriginalL'auteur Mahmoud.ryan