2009-06-12 7 views
2

Je télécharge un fichier en utilisant le codeTélécharger le fichier sans pop-up dans ASP.NET

btnDownloadTemplate.Attributes.Add("onClick", "window.open('StudyReport/WordReportTemplate.doc', 'OpenTemplate', 'resizable=no,scrollbars=no,toolbar=no,directories=no,status=no,menubar=no,copyhistory=no');return false;"); 

Cela affichera une fenêtre contextuelle et la boîte de dialogue de téléchargement apparaît. Comment puis-je éviter la fenêtre contextuelle et seule la boîte de dialogue de téléchargement apparaît à l'écran?

+0

j'ai écrit une réponse et tout, mais j'ai des doutes, je ne suis pas sûr que je reçois ... Si vous voulez quelque chose qui télécharge un fichier lorsque vous cliquez dessus, pourquoi ne pouvez-vous pas utiliser un lien normal? – Kobi

Répondre

2

J'ai eu la réponse. Je supprime les attributs et ajoute l'événement click et dedans.

string path = Server.MapPath(""); 
    path = path + @"\StudyReport\WordReportTemplate.doc"; 
    string name = Path.GetFileName(path); 
    Response.AppendHeader("content-disposition", "attachment; filename=" + name); 
    Response.ContentType = "Application/msword"; 
    Response.WriteFile(path); 
    Response.End(); 
+1

L'utilisation de Response.TransmitFile est plus efficace que WriteFile, car elle ne nécessite pas la mise en mémoire tampon des données brutes. –

2

Ne pas faire un Window.Open, il suffit de changer l'URL de la page pour être le document.

1

Vous pouvez également utiliser window.location au lieu de window.open.

var file = 'StudyReport/WordReportTemplate.doc'; window.location = fichier;

2

Une astuce courante consiste à ouvrir le lien dans un . Cela ne nécessite pas de JavaScript et n'ouvre pas les fenêtres contextuelles ou les onglets vierges. Le peut être très petit, il est donc presque invisible.

<iframe name="DownloadDummy"> 
</iframe> 

Et le lien:

<a href="http://example.com/file.csv" target="DownloadDummy">Download File</a> 
Questions connexes