图片已经放进数据库里了,字段名称是是image,类型是image
上传 图片使用了fileupload控件,上传成功之后,我想读出来
protected void 上传按钮_Click(object sender, EventArgs e)
{
if (FileUpload1.HasFile)
{
string filename = FileUpload1.PostedFile.FileName;
string fileextension = FileUpload1.PostedFile.ContentType;
if(fileextension=="image/jpeg"|| fileextension=="image/bmp")
{
SqlConnection con = new SqlConnection(ConfigurationManager.AppSettings["constr"].ToString());
Stream imgs=FileUpload1.PostedFile.InputStream;
int imglen = FileUpload1.PostedFile.ContentLength;
byte[] imgdata=new byte[imglen];
int i = imgs.Read(imgdata,0,imglen);
string sqlstr = "insert into gg (imgtype,image) values (@imagetype,@image)";
con.Open();
SqlCommand com = new SqlCommand(sqlstr,con);
com.Parameters.Add(new SqlParameter("@imagetype", SqlDbType.VarChar, 1000));
com.Parameters.Add(new SqlParameter("@image", SqlDbType.Image, 16));
com.Parameters["@imagetype"].Value = fileextension;
com.Parameters["@image"].Value = imgdata;
if ((int)com.ExecuteNonQuery() > 0)
{
Response.Write("<script language=javascript>alert('上传成功')</script>");
}
else
{
}
con.Close();
}
else
{
}
}上传成功之后,我想读出来,新建一个页面show.aspx用来读取using System;
using System.IO;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Configuration;
public partial class show : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
if (Request.Params["id"] != null)
{
this.hly(Request.Params["id"].ToString().Trim());
}
}
} private void hly(string id)
{
string sql = " select * from gg WHERE image is not null and id='" + id + "'";
SqlConnection con = new SqlConnection(ConfigurationManager.AppSettings["constr"].ToString());
con.Open();
SqlCommand cmd = new SqlCommand(sql,con);
cmd.CommandText = sql;
//SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
SqlDataReader dr = cmd.ExecuteReader();
if (dr != null)
{
while (dr.Read())
{
//Response.ContentType = "image/jpeg";
//Response.ContentType = "application/x-msdownload ; Charset=utf-8";
//Response.ContentType = "application/octet-stream";
Response.ContentType = "image/jpg";
Response.BinaryWrite((byte[])dr["image"]);//直接写二进制流到页面
Response.End();
}
}
}
}可是读出来的都是乱码,请问,哪个地方出问题?高手帮帮忙,不胜感激!
上传 图片使用了fileupload控件,上传成功之后,我想读出来
protected void 上传按钮_Click(object sender, EventArgs e)
{
if (FileUpload1.HasFile)
{
string filename = FileUpload1.PostedFile.FileName;
string fileextension = FileUpload1.PostedFile.ContentType;
if(fileextension=="image/jpeg"|| fileextension=="image/bmp")
{
SqlConnection con = new SqlConnection(ConfigurationManager.AppSettings["constr"].ToString());
Stream imgs=FileUpload1.PostedFile.InputStream;
int imglen = FileUpload1.PostedFile.ContentLength;
byte[] imgdata=new byte[imglen];
int i = imgs.Read(imgdata,0,imglen);
string sqlstr = "insert into gg (imgtype,image) values (@imagetype,@image)";
con.Open();
SqlCommand com = new SqlCommand(sqlstr,con);
com.Parameters.Add(new SqlParameter("@imagetype", SqlDbType.VarChar, 1000));
com.Parameters.Add(new SqlParameter("@image", SqlDbType.Image, 16));
com.Parameters["@imagetype"].Value = fileextension;
com.Parameters["@image"].Value = imgdata;
if ((int)com.ExecuteNonQuery() > 0)
{
Response.Write("<script language=javascript>alert('上传成功')</script>");
}
else
{
}
con.Close();
}
else
{
}
}上传成功之后,我想读出来,新建一个页面show.aspx用来读取using System;
using System.IO;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Configuration;
public partial class show : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
if (Request.Params["id"] != null)
{
this.hly(Request.Params["id"].ToString().Trim());
}
}
} private void hly(string id)
{
string sql = " select * from gg WHERE image is not null and id='" + id + "'";
SqlConnection con = new SqlConnection(ConfigurationManager.AppSettings["constr"].ToString());
con.Open();
SqlCommand cmd = new SqlCommand(sql,con);
cmd.CommandText = sql;
//SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
SqlDataReader dr = cmd.ExecuteReader();
if (dr != null)
{
while (dr.Read())
{
//Response.ContentType = "image/jpeg";
//Response.ContentType = "application/x-msdownload ; Charset=utf-8";
//Response.ContentType = "application/octet-stream";
Response.ContentType = "image/jpg";
Response.BinaryWrite((byte[])dr["image"]);//直接写二进制流到页面
Response.End();
}
}
}
}可是读出来的都是乱码,请问,哪个地方出问题?高手帮帮忙,不胜感激!
解决方案 »
- HttpWebRequest 遇到一个超难题?
- linq to EF怎么实现in和left join效果。
- gridview 更新时的问题
- dropdownlist, 初始化页面的时候下拉列表为空,点下拉箭头的时候再加载下拉列表数据,这个功能如何实现?
- 自定义控件如何得到自己的id属性和值?
- 如果把WEB程序和数据库分别放在两台服务器上....
- 我的一个人事档案中有30多个字段,用datagrid不好全部显示,那么我能否实现这个选项功能呢?
- 急啊!!在线等!! 关于引用 IE Web Controls 部署到另外一部服务器的问题。
- visual studio.net 2003无法新建项目
- AjaxControlToolkit中的ModalPopupExtender1怎么和datalist结合?
- DropList触发GridView中的事件的问题
- Ajax在Asp.net中的应用
int imglen = FileUpload1.PostedFile.ContentLength; byte[] imgdata=new byte[imglen];
int i = imgs.Read(imgdata,0,imglen);
还有你这句有问题,应该返还一个数据流作为com.Parameters["@image"].Value = imgdata;
赋值参数,你这明显的不对。
private void hly(string id)
{
string sql = " select * from gg WHERE image is not null and id='" + id + "'";
SqlConnection con = new SqlConnection(ConfigurationManager.AppSettings["constr"].ToString());
con.Open();
SqlCommand cmd = new SqlCommand(sql,con);
cmd.CommandText = sql;
//SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
SqlDataReader dr = cmd.ExecuteReader();
if (dr != null)
{
while (dr.Read())
{
Response.Clear();
Response.ContentType = "image/jpg";
byte[] buffer=(byte)dr["Image"];
System.IO.MemoryStream ms=new System.IO.MemoryStream(buffer);
System.Drawing.Image image=System.Drawing.Image.FromStream(ms);
ms.WriteTo(Response.OutputStream);
Response.End();
}
}
System.Drawing.Image image=System.Drawing.Image.FromStream(ms);出异常了。
stream imgreader=new memorystream(imgdata) ;
imgreader.Read(imagedata, 0, imglen);.
.
.com.Parameters["@image"].Value = imgreader;