这个是上传页面的主要代码HttpFileCollection files=HttpContext.Current.Request.Files;
for(int i=0;i<files.Count;i++)
{
HttpPostedFile postedFile = files[i];
int FileLength = postedFile.ContentLength;
Byte[] FileByteArray = new Byte[FileLength];
Stream StreamObject = postedFile.InputStream;
StreamObject.Read(FileByteArray, 0, FileLength);string sqlstr="Insert Into Files(NewsId,FileByte) VALUES('"+name+"','"+FileByteArray+"')";
}
这个是显示主要页面代码,由于不确定图片的个数,用的是动态生成的控件。Image autoimage = new Image();
autoimage.ImageUrl = "NewsList.aspx?NewId=" + Request.QueryString["ID"].ToString().Trim();
autoimage.Width=700;
autoimage.Height = 550;Panel P = new Panel();
P.Controls.Add(autoimage);
ShowFilePanel.Controls.Add(P);这个是图片输出页面 ShowPoto.aspx 的代码string StrId = (string)Request.QueryString["NewId"].ToString().Trim();
DataSet Ds = Bsf.FileByte("select * from NewsFiles where NewId='" + StrId + "'", "TsgMainConStr");
if (Ds.Tables[0].Rows.Count > 0)
{
Response.Clear();
DataRow Dr = Ds.Tables[0].Rows[0];
byte[] buffer = (byte[])Dr["FileByte"];
//Response.ContentType = Dr["FileType"].ToString();
Response.BinaryWrite(buffer);
Response.End();
}调试运行没报错,就是显示不了图片,断点的时候ShowPoto.aspx 也获取到值了。大家帮看看,是哪儿错了?
for(int i=0;i<files.Count;i++)
{
HttpPostedFile postedFile = files[i];
int FileLength = postedFile.ContentLength;
Byte[] FileByteArray = new Byte[FileLength];
Stream StreamObject = postedFile.InputStream;
StreamObject.Read(FileByteArray, 0, FileLength);string sqlstr="Insert Into Files(NewsId,FileByte) VALUES('"+name+"','"+FileByteArray+"')";
}
这个是显示主要页面代码,由于不确定图片的个数,用的是动态生成的控件。Image autoimage = new Image();
autoimage.ImageUrl = "NewsList.aspx?NewId=" + Request.QueryString["ID"].ToString().Trim();
autoimage.Width=700;
autoimage.Height = 550;Panel P = new Panel();
P.Controls.Add(autoimage);
ShowFilePanel.Controls.Add(P);这个是图片输出页面 ShowPoto.aspx 的代码string StrId = (string)Request.QueryString["NewId"].ToString().Trim();
DataSet Ds = Bsf.FileByte("select * from NewsFiles where NewId='" + StrId + "'", "TsgMainConStr");
if (Ds.Tables[0].Rows.Count > 0)
{
Response.Clear();
DataRow Dr = Ds.Tables[0].Rows[0];
byte[] buffer = (byte[])Dr["FileByte"];
//Response.ContentType = Dr["FileType"].ToString();
Response.BinaryWrite(buffer);
Response.End();
}调试运行没报错,就是显示不了图片,断点的时候ShowPoto.aspx 也获取到值了。大家帮看看,是哪儿错了?
二:要想前台显示一定的要刷新前台界面
当然也可以不刷新就的用js中的一个对象Image对象
三:最好在前台的图片地址中加上参数,防止缓存如:../1.jpg?id=123465(随即)
private void button7_Click(object sender, EventArgs e)
{
openFile.InitialDirectory = System.Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
openFile.Filter = "所有文件(*.*)|*.*";
if (openFile.ShowDialog() == DialogResult.OK)
{
T_path.Text = openFile.FileName;
pictureBox1.ImageLocation = openFile.FileName;
}
}
//图片赋值
string myfilename = T_path.Text.Trim(); //OpenFileDialog1.FileName;
FileStream fs = new FileStream(myfilename, FileMode.Open, FileAccess.Read);
byte[] mybytes = new byte[fs.Length];
fs.Read(mybytes, 0, Convert.ToInt32(fs.Length));
member.Poto = Convert.ToBase64String(mybytes);
fs.Close();
//显示图片
pictureBox1.Refresh();
if (ds.Tables[0].Rows[0]["Poto"].ToString().Trim().Length > 0)
{
byte[] buffByte = Convert.FromBase64String(ds.Tables[0].Rows[0]["Poto"].ToString());
System.IO.MemoryStream ms = new System.IO.MemoryStream(buffByte);
pictureBox1.Image = Image.FromStream(ms);
T_path.Text = openFile.FileName.ToString();
}
上传断点时FileByteArray的值是{byte[25457]},上传以后在数据库里我没找到办法查看字段内容...