Créer temporaire lien pour le téléchargement
- Je utiliser ASP.NET
J'ai besoin de donner à l'utilisateur temporaire lien pour télécharger le fichier à partir du serveur.
Il devrait être un lien temporaire (page), qui est disponible pour un court laps de temps (12 heures par exemple). Comment puis-je générer ce lien (temporaire ou page web avec un lien)?
OriginalL'auteur Ilya Blokh | 2011-04-18
Vous devez vous connecter pour publier un commentaire.
Voici un raisonnablement exemple complet.
D'abord une fonction pour créer une courte chaîne hexadécimale à l'aide d'un secret de sel, plus une heure d'expiration:
Puis un morceau de code qui génère un lien avec une semaine de l'expiration:
Enfin la page de téléchargement de l'envoi d'un fichier si un lien valide a été donnée:
Qui vous devriez certainement l'envelopper dans certaines exceptions pour attraper mutilé de la demande.
Réponse.WriteFile fait un bon chemin?je pense qu'il télécharge le fichier sur le serveur télécharge ensuite à l'ordinateur de l'utilisateur.(si mes fichiers sur un autre serveur)
OriginalL'auteur Hugh W
La
<token>
partie est la clé ici. Si vous ne voulez pas associer une base de données, de chiffrer la création d'un lien de temps, de les convertir URL sûr Base64 de représentation et de donner à l'utilisateur que l'URL. Quand il est demandé, de déchiffrertoken
et de comparer la date stockée là avec la date et l'heure actuelles.Alternativement, vous pouvez avoir une
DownloadTokens
tableau qui va de la carte dittoken
s (qui peut être Guid) pour les dates d'expiration.Pourquoi chiffrer le document? Vrai, vous aurez besoin d'un
IHttpHandler
ici, mais c'est vraiment pas une grosse affaire.En fait, je voulais dire pour chiffrer le nom du document. Vous pouvez utiliser SSL si vous souhaitez crypter le document lui-même. La raison je suggère le chiffrement du nom de la doc est parce que je travaille pour un cabinet d'avocats et de nombreux documents sont confidentiels et même le nom est confidentiel. En chiffrant le doc dans l'URL, vous rendre plus difficile pour quelqu'un pour tirer un doc ils ne sont pas censé le faire.
OriginalL'auteur Anton Gogolev
Ajouter un horodatage à l'URL, dans la querystring:
Vérifier l'horodatage à contre-courant du temps.
Pour éviter à l'utilisateur de changer l'horodatage par lui-même, également calculer les secrets de hachage sur l'horodatage, et aussi ajouter que, pour la requête:
Comme hachage, vous pouvez faire quelque chose comme la somme de tous les champs de type DateTime modulo certains nombre premier, ou la somme SHA1 de la représentation de chaîne des temps. Maintenant, l'utilisateur ne sera pas en mesure de modifier l'horodatage sans connaître le bon de hachage. Dans votre page.aspx, vous vérifiez la donnée de hachage contre le hachage de l'horodatage.
OriginalL'auteur Sjoerd
Il y a un million de façons de le faire.
La façon dont je l'ai fait une fois pour un projet est de générer une clé unique et l'utilisation d'une dynamique downloader script pour diffuser le fichier. lorsque le dossier de demande a été faite la clé a été générée et stockée dans la db avec une date de création et le fichier demandé. vous créez un lien vers le téléchargement de script et transmis à la clé. à partir de là, il était assez facile de garder une trace de l'expiration.
OriginalL'auteur Alan Barber
llya
Je vais supposer que vous êtes ne nécessitant pas d'authentification et de sécurité n'est pas une question si quelqu'un obtient l'URL qu'ils seront aussi donc etde à télécharger le fichier.
Personnellement, j'aimerais créer un HttpHandler et ensuite de créer une certaine chaîne unique que vous pouvez ajouter à l'URL.
Puis à l'intérieur de la ProcessRequest void test de l'encodage du param pour voir si c'est toujours viable (avec dans votre délai spécifié) si oui utiliser BinaryWrite pour rendre le Fichier ou si non vous pouvez rendre le contenu HTML à l'aide de la Réponse.Write("Expiré")
Quelque chose comme :
Vous devez ensuite configurer le Gestionnaire des services IIS, mais un peu différentes selon la version que vous utilisez.
OriginalL'auteur hokapoka