sos 在线等!
我写了一个关于图片上传到数据库里的例子,执行成功 但是插入数据库里的blob类型值为空????
还有这个方法总是执行两次??? 看init里的事件只定义一次,请各位大侠帮帮忙!
代码如下:
public void Button1_Click(object sender, System.EventArgs e)
{
HttpPostedFile UpFile =
this.Request.File[0] ; //UP_FILE.PostedFile HttpPostedFile对象,用于读取图象文件属性
FileLength = UpFile.ContentLength; //记录文件长度
string filePath = UpFile.FileName;
OracleConnection conn = null;
try
{
if (FileLength == 0)
{ //文件长度为零时
txtMessage.Text = "<b>请你选择你要上传的文件</b>";
}
else
{
//写到特定位置
// string tmpFileName = myFile.FileName;
// string myFileName = tmpFileName.Substring(tmpFileName.LastIndexOf("."));
// string myFileMimeType = myFile.ContentType();
// myFile.SaveAs(this.Server.MapPath("../" + myFileName));
Byte[] FileByteArray = new Byte[FileLength]; //图象文件临时储存Byte数组
Stream StreamObject = UpFile.InputStream; //建立数据流对像
//读取图象文件数据,FileByteArray为数据储存体,0为数据指针位置、FileLnegth为数据长度
StreamObject.Read(FileByteArray,0,FileLength);
StreamObject.Close();
conn = new OracleConnection(comm.Constant.OraString);
string SqlCmd = " insert into qjbtest(ID,thebmp)values(8,:mid)";
conn.Open();
OracleCommand myCommand = new OracleCommand();
myCommand.CommandText = SqlCmd;
myCommand.Parameters.Add(":mid",OracleType.Blob,FileLength);
myCommand.Parameters[":mid"].Value = FileByteArray;
myCommand.Connection = conn;
int num = myCommand.ExecuteNonQuery();
conn.Close();
if(num > 0)
{
txtMessage.Text = "<p><b>OK!你已经成功上传你的图片</b>";//提示上传成功
}
else
{
txtMessage.Text = "<p><b>SORRY!你的图片上传出错</b>";//提示上传出错
}
}
}
catch (Exception ex)
{
Response.Write(txtMessage.Text = ex.Message);
Response.End();
}
finally
{
if(conn!=null)
{
conn.Close();
}
}
}