解决方案 »
- 网页弹出提示框后点击确定返回到另一个指定的页面
- 求高手 给 这段代码 优化一下
- gridview中编辑按钮点击两次两次才能触发事件,请高人帮忙,在线等!
- 奇怪 dropdownlist
- 请一SQL语句》》》》》》》》》》》》》》》。。!!!!
- 如果光标已经在一个输入控件的起始位置,按ESC键,就视为无效,因为我有一控件如果光标已经在起始位置,再按ESC就会出错。
- 用FileStream这样生成txt文件,会有限制吗?
- 如何是DataGrid中显示的null变成空?
- 急急!!如何把DropDownLIst中的数据帮顶到 SQL
- 如何知道计算机上运行的所有进程?如何区分是图形界面的还会后台服务进程?
- 写了一个应用程序 需要自己写注册表么?注册表具体是什么意思?
- wpf应用程序
{
MemoryStream ms = new MemoryStream(filebytes);
Image img = Image.FromStream(ms); ms.Close();
ms.Dispose();
} 试试
这让我想起了MSDN里FromStream的一段话:You must keep the stream open for the lifetime of the Image.
protected void imgbtnCreate_Click(object sender, ImageClickEventArgs e)
{
string PerHomeName=tbPerHomeName.Text;//获取空间名
string PerHomeSign=txtPerSign.Text; //获取个性签名
string imgPath = uploadFile.PostedFile.FileName;//获取文件件名
string lastName = imgPath.Substring(imgPath.LastIndexOf(".") + 1);//获取文件上传后缀名
SqlConnection conn = new SqlConnection(ConfigurationManager.AppSettings["conStr"]);
conn.Open();
if (uploadFile.PostedFile.FileName != "" && lastName.ToLower() == "jpg" || lastName.ToLower() == "gif")
{
if (uploadFile.PostedFile.ContentLength > 40960)
{
Response.Write("<script language='javaScript'>alert('你上传的图片超过了40KB!')</script>");
return;
}
int imgLength = uploadFile.PostedFile.ContentLength;//获取上传文件大小
Byte[] imageData = new Byte[imgLength]; //定义Byte数组
HttpPostedFile hp = uploadFile.PostedFile;//创建访问客户端上传文件的对象
Stream imagestream = hp.InputStream;//创建数据流对象
//将图片数据放到image数据对象实例中,其中0代表数组指针的起始位置,imagelength表示要读取流的长度
imagestream.Read(imageData, 0, imgLength);
string sqlstr = "insert into PerHomeDetail(PerHomeName,PerHomeSign,PerHomeLogo)values('" + PerHomeName + "','" + PerHomeSign + "',@ImageData)";
SqlCommand comm = new SqlCommand(sqlstr, conn);
comm.Parameters.Add("@ImageData", SqlDbType.Image);
comm.Parameters["@ImageData"].Value = imageData;
comm.ExecuteNonQuery();
conn.Close();
Response.Write("<Script>alert('个人空间创建成功!')</Script>");
}
else
{
Response.Write("<script>alert('上传头像不能为空,且格式必须为gif或jpg!');location='javascript:history.go(-1)'</script>");
}
}
我的貌似是解决了,不是没对流和图片释放的问题。应该是被PictureEdit控件占住了图片和流,无法进行彻底释放。我把这控件的Image给释放,目前尝试存了百来张5MB的,没在溢出。如果你也是有用控件将图片给显示出来,也尝试下在流和图片都关闭之后,将这个图片显示控件在窗体关闭前也做一次累死Dispose的操作吧