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();
{
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();
}
}
{
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;
{
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();
con.Open();
SqlDataReader myReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
myReader.Read();
int iBufferSize =
Convert.ToInt32(myReader.GetString(2));
byte[] Buffer = new byte[iBufferSize];
byte[] Buffer = new byte[iBufferSize];
//Content in Buffer
schreiben
long lIdx=myReader.GetBytes(1,0,Buffer,0,iBufferSize);
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 "";
}
}
cmd.Dispose();
return strUrl_Server;
}
catch(Exception e)
{
return "";
}
}
Mit freundlichen Gruessen
Best regards
Best regards
Sven R�tz
BA -
Student
