La création de lien de téléchargement d'un fichier sur un serveur de fichiers
Je suis à la recherche d'un moyen de (facilement, par préférence ;)) de créer un lien de téléchargement d'un fichier sur un serveur de fichiers distinct.
La situation est comme suit: l'application que je suis en développement (asp.net 2.0 vb.net mais j'ai un problème similaire en c#, l'une ou l'autre solution qui fonctionne pour moi) sera exécuté en interne pour une entreprise.
Comme il est de bonne pratique, le stockage de fichiers et d'applications web sont sur deux serveurs distincts.
En gros, j'ai besoin d'être en mesure de créer un lien de téléchargement d'un fichier, le seul disponible à l'URL que j'ai accès au fichier est \servername\folder1\folder2\folder3\file.txt (peut être n'importe quelle sorte de fichier)
Alors que les liens ne fonctionnent simplement pas. C'est de cette façon qu'il est actuellement mis en place:
tablerowfield.Text = String.Format(
"<a href=""\\servername\folder1\folder2\folder3\{0}""
target=""_blank"">Click me</a>",
filename)
Qui ne travaillent pas pour des raisons évidentes. Il sert à être mis en place pour écrire le fichier sur le chemin de l'application elle-même et qui a parfaitement fonctionné, mais ce n'est pas une bonne pratique et c'est pourquoi je vais changer (ou d'essayer).
J'ai lu des solutions sur la création d'une page de téléchargement, et puis d'avoir une table dans votre base de données qui détient les liens et renvoie la bonne URL de site web pour le téléchargement, mais la contrainte de temps je suis confronté avec, malheureusement, ne m'autorise pas à se développer.
En supposant que je peux fournir une chaîne de caractères contenant le chemin d'accès complet vers le fichier comme ci-dessus, quelle est la façon la plus simple de créer un lien qui, lorsqu'il est cliqué, télécharge le document?
Remarque: j'ai 0 droits d'admin dans cet environnement. Ce n'est pas vraiment m'aider. Imaginons que je me suis donné le bon lien comme ci-dessus et avoir les droits d'accès au fichier et.
Mise à JOUR:
L'exemple ci-dessus fonctionne sous IE mais pas sous Firefox et Chrome. IE le convertit en un fichier://servername/... lien qui fait ce qu'il est censé le faire, mais FF et Chrome à la fois activement décidé que c'est dangereux et que vous avez désactivé à partir de leurs navigateurs.
OriginalL'auteur Flater | 2011-10-11
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser le fichier ASHX (dire, downloadfile.ashx) et utiliser le code suivant (pas testé, mais ce sera quelque chose comme ça):
puis de les utiliser dans votre balise d'ancrage comme:
Remarque: Vous pouvez également passer des paramètres pour le téléchargement de fichiers différents comme:
et puis, dans ashx fichier, utilisez le nom de fichier à télécharger le fichier.
Vous pouvez passer comme paramètre file=abc.txt pour le premier lien, file=otherfile.txt etc comme je l'ai déjà mentionné. Donc, vous allez obtenir des noms de fichier de manière dynamique et en les passant à ASHX fichier. Vous avez besoin ASHX fichier de sorte que vous pouvez permettre à l'utilisateur de télécharger à partir de là (votre domaine au lieu d'utiliser le chemin d'accès au serveur qui n'existe pas sur le côté client (si ce n'est pas sur le réseau local)
Ok ignorer mon post précédent, j'ai peut simplement déposer le Serveur.Mappath et puis il fonctionne 🙂 encore un peu floue sur la finalisation de ce mais vous avez m'a aidé énormément! Merci!
Je n'arrive pas à obtenir ce lien de travail dans une fenêtre popup. Je ne sais pas pourquoi la Réponse.Écrire ne fait rien.
Cette solution a fonctionné pour moi, sauf que je suis en utilisant la Réponse.TransmitFile au lieu de Réponse.WriteFile, car il est mieux adapté pour les gros fichiers.
OriginalL'auteur wasimbhalli
ce bout de code va créer un fichier dans le dossier de téléchargement avec name=hi.txt et le contenu comme "dieu merci, enfin fichier s'est téléchargé."
OriginalL'auteur Narottam Goyal
Si votre fichier est déjà sur le serveur, alors vous pouvez utiliser ce code sur votre bouton de téléchargement, cliquez sur événement de ce
OriginalL'auteur user2766067
\\servername\folder1\folder2\folder3\...
est un chemin d'accès UNC qui ne peuvent pas être utilisés à partir d'un navigateur. Parce que les fichiers sont sur un serveur distinct, vous avez besoin d'un href attribut de la formehttp://server-name/folder1/folder2/file.txt
.Si le nom de serveur est encore sans réponse par les clients, alors vous devez d'abord obtenir l'adresse IP du serveur, puis de formuler le href de la forme:
http://10.1.1.30/folder1/folder2/file.txt
Ici est de savoir comment vous obtenez l'adresse IP du serveur-nom:
EDIT:
Avec le ashx solution à votre demande de lire le fichier à partir du serveur et de relais pour les clients, plutôt que de simplement fournir aux clients un lien pour télécharger le fichier directement sur le serveur de fichiers.
OriginalL'auteur Abhinav