Force download ASP.Net

In ASP.Net (mit C#) ich bin versucht zu erstellen .DAT-Dateien mit plain-text und schickt es an den browser und force download. Ich habe versucht, einige Dinge, aber ich nicht bekommen kann es arbeiten. In meiner aspx-Datei es ist eine ImageButton

<asp:ImageButton ID="btnSave" runat="server" CausesValidation="False" ImageUrl="~/Images/Stages/Database/Save.png" OnClick="btnSave_OnClick" Width="26px" />

In der OnClick-Methode, die ich versuche, die Datei zu erzeugen und an den browser zu senden.

protected void btnSave_OnClick(object sender, EventArgs e)
{
    string file = "test.dat";
    string fileName = "~\\Stages\\Broekx\\Databanken\\" + file;

    FileStream fs = new FileStream(MapPath(fileName), FileMode.Open);
    long cntBytes = new FileInfo(MapPath(fileName)).Length;
    byte[] byteArray = new byte[Convert.ToInt32(cntBytes)];
    fs.Read(byteArray, 0, Convert.ToInt32(cntBytes));
    fs.Close();

    ImageButton btnSave = (ImageButton)FormViewStagesDummy.FindControl("btnSave");
    btnSave.Visible = false;

    File.Delete(Server.MapPath(fileName));

    if (byteArray != null)
    {
        this.Response.Clear();
        this.Response.ContentType = "text/plain";
        this.Response.AddHeader("content-disposition", "attachment;filename=" + file);
        this.Response.BinaryWrite(byteArray);
        this.Response.End();
        this.Response.Flush();
        this.Response.Close();
    }
}

Die Datei test.dat existiert in den richtigen Ordner und muss gelöscht werden, nachdem Sie gelesen wurden, in Byte. Ich habe versucht, diese löschen, ohne die Datei und die, die nicht arbeiten entweder.

Nach einem Klick auf die Schaltfläche btnSave muss versteckt sein, so dass ist, warum ich den parameter Visible auf false.

Ich habe auch versucht es mit " content-type "application/octet-stream" oder eine PDF-Datei und content-type "application/pdf", aber nichts funktioniert. Die Seite wird normal geladen und keine Datei ist, die heruntergeladen wird.

  • Ich vermute, einige sind Teil der Antwort bekommt, senden, bevor der Header. Ich versteh auch nicht, wie Sie erwarten, dass eine einzige Antwort, eine Datei herunterzuladen, und einen Knopf unsichtbar zugleich.
  • Ich dachte, etwas ähnliches aber wie kann ich diese Arbeit machen?
  • Als Randbemerkung: schau File.ReadAllBytes ersetzen Sie die 5 Zeilen, die Sie verwenden, die Datei zu Lesen. Sollten Sie nur tun, dass bei sehr kleinen Dateien, obwohl, vielleicht bis zu 10kB.
  • Ich glaube nicht, verwenden webforms, so kann ich dir nicht helfen mit, dass. Ich würde ausblenden die Schaltfläche mit javascript, und nur dann auslösen, der download.
  • Versucht, ohne sich zu verstecken, die Taste aber nicht funktioniert entweder. Die Datei ist mit über 50kb.
  • Das "Lesen" nicht garantiert füllen Sie den gesamten Puffer. Es gibt die tatsächliche Anzahl der bytes, die gelesen - check. Verwenden ReadAllBytes statt.

InformationsquelleAutor Yoni | 2012-02-14
Schreibe einen Kommentar