我上传了一个头像,写入了服务器上的指定路径,然后把这个路径保存在数据库里.
登录的时候就把这个路径读出来,路径URL给image控件,但为什么我的头头像不能
显示呢,看HTML代码,路径是对的.这是为什么?大家帮帮忙啊?

解决方案 »

  1.   

    跟图片的权限有什么关系啊,我直接把它给image的URL属性,就能显示啊.
      

  2.   

    可能是读取出来的路经不对!你可以看一下html中的图片路径是不是正确!很多的时候是要做处理的!
      

  3.   

     <img id="ctl00_ContentPlaceHolder1_Image1" src="F:\work\project\baixing\pictures\8\145.jpg" alt="暂无头像" style="height:171px;width:181px;border-width:0px;" />
    html的代码,上面图片的路径和我存放的路径是一模一样的啊,我做的是一个网站,图片是在服务器中的
    路径保存在数据库中,然后根据路径来显示图片.这样的逻辑有问题吗?
      

  4.   

    src="F:\work\project\baixing\pictures\8\145.jpg"保存进数据库的路径只保存相应存放的相对路径即可如:pictures\8\145.jpg
    读取绑定后应该是src="pictures\8\145.jpg" 这样就不会错了
      

  5.   

    好像和我想得不一样,但是还是贴一下~转化为二进制流:首先你要在数据库中修改图片相关的属性
    这里就说说用到的几个:Pic,PicType,PicSize
    Pic(类型:OLE对象)里存储的是图片的二进制流地址,PicType是图片类型,PicSize自然就是图片大小了浏览图片:
    加一个 <asp:FileUpload ID="fldPic" runat="server"  onchange="PreviewImg(this)"/>
    <style type="text/css">#newPreview {FILTER: progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale)}</style>
    <script language="javascript" type="text/javascript">
        function PreviewImg(imgFile)
        {    
            var newPreview = document.getElementById("newPreview");
            newPreview.filters.item("DXImageTransform.Microsoft.AlphaImageLoader").src = imgFile.value;
            newPreview.style.width = "250px";
            newPreview.style.height = "270px";
        }
     </script> 
    这样我们就可以从自己的电脑上选图片啦~存储图片:
     HttpPostedFile hpfileUpFile = fldPic.PostedFile; //HttpPostedFile对象,用于读取图象文件属性   
     Int32 nFileLength = fldPic.PostedFile.ContentLength; //记录文件长度     
     Byte[] btFileByteArray = new Byte[nFileLength]; //图象文件临时储存Byte数组   
     Stream StreamObject = hpfileUpFile.InputStream;//建立数据流对像    //读取图象文件数据,btFileByteArray为数据储存体,0为数据指针位置、nFileLength为数据长度   
     StreamObject.Read(btFileByteArray, 0, nFileLength);  //获取主题实体信息
      forum.Type = txtType.Text.Trim();
      forum.TypeExplain = txtaTypeExplain.Value.Trim();
      forum.Pic = btFileByteArray;
      forum.PicType = hpfileUpFile.ContentType;
      forum.PicSize = nFileLength;
    我这里用的是实体,不过不管什么方法,反正就是取值而已,接着是添加进数据库就OK了,下面的便是如何显示的问题。显示:
    yourImage.ImageUrl=FormatImage(yourImageID);需要这个函数:
     protected string FormatImage(int  id)
        {
            return "ReadImage.aspx?id=" +id
        }readimage是需要你自己新建的~/// <summary>
    /// 用来暂存从数据库中读取的图片
    /// </summary>
    public partial class Pages_ReadImage : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            //获取图片的id
            int nID = Convert.ToInt32(Request["id"]);
            string strSql="";        strSql="select * from yourDB where ID=" + nID;
                              if (strSql == "")
                return;        DataSet ds = GetDataSet(strSql);
            if (ds != null && ds.Tables[0].Rows.Count > 0)
            {
                Response.Clear();
                Response.ContentType = ds.Tables[0].Rows[0]["PicType"].ToString();
                Response.BinaryWrite((byte[])ds.Tables[0].Rows[0]["Pic"]);
                Response.End();
            }
        }    private DataSet GetDataSet(string sql)
        {
            OleDbDataAdapter sda = new OleDbDataAdapter(sql,OleDbHelper.ConnectionStringLocalTransaction);
            DataSet ds = new DataSet();
            sda.Fill(ds);
            return ds;
        }
    }
      

  6.   

    F:\work\project\baixing\pictures\8\145.jpg??????????????????????????????????????????????保存上传路经的时候要转化为相对路经用 Server.MapPath(路经)转化一下!
      

  7.   

    Image1.ImageUrl = Server.MapPath(appPath + "\\" + ConfigurationManager.AppSettings.Get("picturefile") + "\\" + (string)Session["userID"] + "\\" + name);
    那这个我该怎么写呢?