2016-08-03 17 views
1

Ich entwickle ein Programm in VS2015. Ich habe eine abc.html Datei dynamisch erstellt. Jetzt möchte ich eine Funktionalität, die, wenn Benutzer auf Knopf klicken, die HTML-Datei im Browser öffnen oder speichern sollte. Wie kann ich das tun? -Code eine HTML-Datei dynamisch zu machen, ist wie folgt:Wie HTML-Datei auf einen Klick auf Schaltfläche in asp.net herunterladen?

Client-Seite wie folgt:

<asp:button ID="BtnGenrateHTML" runat="server" text=" Generate HTML " OnClick="btnAddnew_Click" /> 

Code hinter, wie folgt

protected void TestThisHTML(object sender, EventArgs e) 
    { 
     string sFileFullName; 
     string sFilePath; 
     string sFileName; 

     string strHTMLGrid = ""; 


     strHTMLGrid = strHTMLGrid + "Dear Customer,<BR><BR> Please provide below OTP to complete registration <BR><BR> "; 
     strHTMLGrid = strHTMLGrid + "<BR><BR> This OTP is valid for 15 minutes."; 
     strHTMLGrid = strHTMLGrid + "<BR><BR> With Best Regards - Indiefy"; 
     strHTMLGrid = strHTMLGrid + "<BR><BR> Hi My name is Basant Gera"; 



     sFilePath = Server.MapPath(""); 
     sFileName = "abc.html"; 
     sFileFullName = sFilePath + "\\" + sFileName; 
     if (!Directory.Exists(sFileFullName)) 
     { 
      Directory.CreateDirectory(sFilePath); 
     } 
     // if it exist than to delete it. 
     if (System.IO.File.Exists(sFileFullName)) 
     { 
      System.IO.File.Delete(sFileFullName); 
     } 

     // If it deleted than we need to create it again 
     FileStream fs = new FileStream(sFileFullName, FileMode.Create); 
     using (StreamWriter w = new StreamWriter(fs, Encoding.UTF8)) 
     { 
      w.WriteLine(strHTMLGrid); 
     } 

     fs.Close(); 
     Page.ClientScript.RegisterStartupScript(this.GetType(), "", "fncpopup();", true); 
    } 

Jetzt funktioniert gut My abc.html Datei .. Nun möchte ich mit einem Klick auf die Schaltfläche diese HTML-Datei im Browser gespeichert werden und im Browser fragen, ob Sie sie öffnen oder an einem bestimmten Ort speichern möchten

<asp:button ID="BtnGenrateHTML" runat="server" text=" Generate HTML " OnClick="btnAddnew_Click" /> 

Ort, an dem die Datei von Html gespeichert wird ----> Ich habe mappath.server verwendet, um es im aktuellen Verzeichnis zu speichern.

Wenn möglich, speichern Sie es im Download-Ordner in unserem Verzeichnis von PC.

Antwort

1

Haben Sie das letzte in Antwort versucht zu senden:

{... 
    .... 
    fs.Close(); 
    Response.ContentType = "application/octet-stream"; 
    Response.AppendHeader("Content-Disposition","attachment; filename=abc.html"); 
    Response.TransmitFile(sFileFullName); 
    Response.End(); 
    .... 
} 
+0

Sein ehrfürchtig Arbeite ... Ich habe es angewendet Aber für Wissensbasis kann ich wissen, was application/octet-stream und Content-Disposition ist „“ Befestigung; filename = abc.html ... Bitte lassen Sie mich wissen –

+0

@BasantGera In jeder Anfrage und Antwort zwischen Server und Client gibt es HTTP-Header, die Informationen über den Client-Browser enthält, angeforderte Seite, Server Hier, wo die 'application/octet-stream "als Inhaltstyp, um den Browser über das Vorhandensein einer Stream-Datei in einer Antwort zu informieren. Wenn Sie ihn also durch" text/html "ersetzen, würde der Browser verstehen, dass es sich um eine HTML-Datei handelt. Für die "Content-Disposition", "Anhang; filename = abc.html 'wir ordnen dem http-Header den Dateinamen (abc.html) zu und senden ihn als Anhang (öffne Download-Fenster im Browser). –

+0

Sie können über HTTP-Header [hier] (http://code.utsplus.com/tutorials/http-headers-for-dummies--net-8039) überprüfen Sie bitte die Antwort als gelöst, wenn das Ihnen helfen –