Hallo zusammen

Ich habe heute versucht ein File-Uploadscript zu schreiben, welches Files
direkt in eine MSSQL Datenbank und auch in einen Ordner auf dem Server
schreibt. Das schreiben in den Ordner klappt und auch beim schreiben in die
Datenbank kommt keine Fehlermeldung. Beim auslesen aus der Datenbank
hingegen wird immer ein File von 13 Bytes an den Browser gesandt, egal wie
gross es beim Upload war. Ich hab leider auch nicht herausgefunden wie ich
herausfinden kann ob �berhaupt alles erfolgreich in die DB geschrieben
wurde, auch nicht mit dem MSSQL Enterprise Manager.

Es stellt sich auch die Frage ob ich die richtigen Feldtypen verwendet habe,
f�r die Byte[]-Daten (Spalte: filedata) habe ich den Feldtyp "image" mit
L�nge 16 ausgew�hlt.

Und so sieht mein Upload-Script aus:

//*********************************************************************
//Uploads file to server
protected void btnUpload_ServerClick(object sender, System.EventArgs e)
{
HttpPostedFile file = txtAttachment.PostedFile;

if (file !=null)
{
//Gets filename
string fileName= Path.GetFileName(file.FileName);

//Gets contenttype
string contentType= file.ContentType ;

//Gets filesize
int fileSize= file.ContentLength;

//Writes bytes into byte array
byte[] fileData = new byte[fileSize];
file.InputStream.Read(fileData, 0, fileSize);

this.WriteToFile(Server.MapPath(".\\" + "files\\" + fileName), ref
fileData);
this.WriteToDB(fileName, contentType, ref fileData);
}
}

//*********************************************************************
// Writes file to current folder
private void WriteToFile(string strPath, ref byte[] fileData)
{
// Create a file
FileStream newFile = new FileStream(strPath, FileMode.Create);

// Write data to the file
newFile.Write(fileData, 0, fileData.Length);

// Close file
newFile.Close();
}

//*********************************************************************
//Writes file to the DB
private void WriteToDB(string fileName, string contentType, ref byte[]
fileData) 
{
//Creates connection
SqlConnection sqlConn = new SqlConnection(
"server=" + Const.DATABASE +
";initial catalog=" + Const.INITIALCATALOG +
";user id=" + Const.USERID +
";password=" + Const.PASSWORD);

//Opens connection
sqlConn.Open();

//Creates query
SqlCommand sqlCmd = new SqlCommand(
string.Format(Sql.INS_FILE,fileName, fileData, contentType,
fileData.Length), sqlConn);

//Executes query
sqlCmd.ExecuteNonQuery();
}

//*********************************************************************
//*********************************************************************
Das Downloadscript:

private void Button1_Click(object sender, System.EventArgs e)
{
//Creates connection
SqlConnection sqlConn = new SqlConnection("server=" + Const.DATABASE +
";initial catalog=" + Const.INITIALCATALOG +
";user id=" + Const.USERID +
";password=" + Const.PASSWORD);

SqlDataAdapter sqlAdpt = new SqlDataAdapter();
sqlAdpt.SelectCommand = new SqlCommand("SELECT * FROM tbl_files", sqlConn);

//Fills dataset
DataSet ds = new DataSet();
sqlAdpt.Fill(ds, "tbl_files");

//Testing, returns only first recordset
DataRow row = ds.Tables["tbl_files"].Rows[0];

//Sends header
Response.Clear();
Response.AddHeader("content-disposition","attachment; filename=" +
(string)row["filename"]); 
Response.ContentType = (string)row["contenttype"];
Response.BinaryWrite((byte[])row["filedata"]);
Response.End();
}
//*********************************************************************

Also, ihr seid meine letzte Hoffnung, es haben heute mehrere Personen
versucht das Problem zu beheben - Leider ohne Erfolg.

F�r jeglichen Art von Anregungen und L�sungsvorschl�ge bin ich dankbar.

Viele Gr�sse Daniel

_______________________________________________
Asp.net Mailingliste, Postings senden an:
[EMAIL PROTECTED]
An-/Abmeldung und Suchfunktion unter:
http://www.glengamoi.com/mailman/listinfo/asp.net

Antwort per Email an