Title: Nachricht
Guten morgen Liste,
 
ich habe ein etwas verzwicktes Prob. Ich soll einen Download implementieren (mit ASP.NET versteht sich). Leider lade ich keine Datei herunter, sondern ich wollte eigentlich direkt aus der Datenbank, in der die Dateien gespeichert liegen, den Stream downloaden lassen. Im mom. speichere ich das Bytearray aus der DB tempor�r auf dem Server und lasse dann die Datei herunterladen aber diese l�sung ist ja irgendwie nicht sonderlich elegant.
 
Meine Fragen, ist mein Vorhaben �berhaupt m�glich? Also kann ich direkt den Download eines Streams starten lassen?
wenn ja, wie? ;o) und wenn nein, wie kann ich die Tempor�ren Dateien NACH dem Download wieder l�schen(ich wei� nicht wann ich das File.Delete ausl�sen soll)?
 
Momentaner Quelltext:(C#)
 
void Page_Load(Object sender, EventArgs e)
{
    string strUrl_Server = writeFileToTemp();
 
    if(strUrl_Server!="")
    {
        System.IO.FileInfo Datei = new System.IO.FileInfo(strUrl_Server);
        Response.Clear();
        Response.AddHeader("Content-Disposition","attachment; filename=" + Datei.Name);
        Response.AddHeader("Content-Length",Datei.Length.ToString());
        Response.ContentType = "application/octet-stream";
        Response.WriteFile(Datei.FullName);
        Response.End();
    }
}
 
string writeFileToTemp()
{
    try
    {
        string strDbConnString = "uid=supportUserIntern; password=iti; initial catalog=itiSupport;data source=ITISERVER03;Connect Timeout=30";
        string strQuery        = "SELECT url,content,size FROM [Sven.R�tz].ITI_Attach WHERE id="+Request.QueryString["file"];
        SqlConnection   con    = new SqlConnection(strDbConnString);
        SqlCommand      cmd    = new SqlCommand();
        cmd.CommandText        = strQuery;
        cmd.Connection         = con;
 
        //Verbindung aufbauen
        con.Open();
        SqlDataReader myReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
        myReader.Read();
 
        int iBufferSize = Convert.ToInt32(myReader.GetString(2));
        byte[] Buffer = new byte[iBufferSize];
 
        //Content in Buffer schreiben
        long lIdx=myReader.GetBytes(1,0,Buffer,0,iBufferSize);
 
        string strUrl_Server = "C:\\ITI_Support\\Temp\\"+myReader.GetString(0);
 

        try
        {
            FileStream fs = new FileStream(strUrl_Server, FileMode.CreateNew);
            BinaryWriter w = new BinaryWriter(fs);
                w.Write(Buffer);
            //Schlie�en der Dateioperationsobjekte
            w.Close();
            fs.Close();
        }catch(Exception ex){}
 
        con.Close();
        cmd.Dispose();
        return strUrl_Server;
    }
    catch(Exception e)
    {
        return "";
    }
}
 
 
 
Mit freundlichen Gruessen
Best regards
 
Sven R�tz
BA - Student

Antwort per Email an