2009-11-09 3 views
0

voulez avoir un bouton de lien hypertexte dans un gridView dans lequel je peux afficher un lien pour un téléchargement direct de fichiers.ASP.Net HyperLink et Télécharger directement?

Jusqu'à présent, je vais bien, mais quand je lier le fichier dans le NavigateURL, je ne reçois pas le fichier via clic, je dois faire un clic droit -> Enregistrer sous! Que je ne veux pas. De l'aide?

+0

Qu'est-ce qui se passe exactement lorsque vous cliquez sur le lien? Rien ne se passe? Est-ce qu'il s'ouvre dans le navigateur au lieu d'ouvrir la boîte de dialogue "Enregistrer sous"? – Greg

+0

Non, rien ne se passe. Je souhaite avoir la boîte de dialogue Enregistrer sous – Kovu

+0

Quelle est la demande envoyée par le navigateur? Quelle est la réponse du serveur? Sans avoir connu ce problème auparavant, je ne pense pas qu'il y ait suffisamment d'informations pour répondre à votre question. Utilisez Fiddler ou un outil similaire et dites-nous à quoi ressemble la requête et la réponse HTTP. Le comportement est-il identique entre les navigateurs? – Bryan

Répondre

1

Vous pouvez configurer un gestionnaire de fichiers ashx. Votre ashx prend la demande par la chaîne de requête, charge le fichier approprié dans la mémoire, définit les en-têtes de réponse appropriés et les flux du fichier dans le navigateur:

FileInfo fileInfo = new FileInfo(PATH-TO-YOUR-FILE); //You need to specify this 
context.Response.ContentType = YOUR-CONTENT-TYPE; //And this 
context.Response.AddHeader("Content-Length", fileInfo.Length.ToString()); 
context.Response.WriteFile(fileInfo.FullName); 
context.Response.Flush(); 
context.ApplicationInstance.CompleteRequest() 

Cela vous permet d'avoir un certain contrôle à grain fin sur le contenu qui est étant livré si vous avez des inquiétudes sur la sécurité ou peut-être garder la trace de qui a téléchargé quel fichier, etc

0

Cela ressemble à un problème de navigateur. Peut-être que le navigateur essaie d'ouvrir une application pour gérer cela et échouer. Vérifiez vos associations d'application et/ou essayez un nouveau navigateur.

0

Je voudrais ajouter aussi en-tête « Content-Disposition » à la réponse:

context.Response.AppendHeader("Content-Disposition", "attachment; filename = " + filename); 
Questions connexes