2楼给的代码就可以实现……
在aspx页面首先设置:
<FORM ENCTYPE="multipart/form-data" RUNAT="server" ID="Form1">//enctype是来设置MIME编码格式以使可以上传图片……
我给你解释一下他的代码吧……
private void UploadFile()
{
string strFilePathName = loFile.PostedFile.FileName; //获取完整的路径
string strFileName = Path.GetFileName(strFilePathName);//获取图片的名称
int FileLength = loFile.PostedFile.ContentLength;//获取图片的大小
if(FileLength<=0)//判断是否有图片
return;
try
{
Byte[] FileByteArray = new Byte[FileLength];//用图片的长度来初始化一个字节数组存储临时的图片文件
Stream StreamObject = loFile.PostedFile.InputStream; //建立文件流对象
StreamObject.Read(FileByteArray,0,FileLength);// 读取图片数据到临时存储体FileByteArray,0为数据指针位置,fileLength为数据长度
string strCon = System.Configuration.ConfigurationSettings.AppSettings["DSN"];
SqlConnection Con = new SqlConnection(strCon);
String SqlCmd = "INSERT INTO ImageStore (ImageData, ImageContentType, ImageDescription, ImageSize) VALUES (@Image, @ContentType, @ImageDescription, @ImageSize)";
SqlCommand CmdObj = new SqlCommand(SqlCmd, Con);
CmdObj.Parameters.Add("@Image",SqlDbType.Binary, FileLength).Value = FileByteArray;//将二进制的图片赋值给@Image
CmdObj.Parameters.Add("@ContentType", SqlDbType.VarChar,50).Value = loFile.PostedFile.ContentType; //记录图片类型
CmdObj.Parameters.Add("@ImageDescription", SqlDbType.VarChar,200).Value = tbDescription.Text;//其他的一些表单元素,比如说明等的东东
CmdObj.Parameters.Add("@ImageSize", SqlDbType.BigInt,8).Value = FileLength;//记录图片长度,读取数据的时候会用到的
Con.Open();
CmdObj.ExecuteNonQuery(); //执行Sqlcommand
Con.Close();//关闭链接
Response.Redirect("ShowAll.aspx");//跳转页面
}
catch(Exception ex)//抛出异常
{
throw ex;
}
}