环境是ASP.NET,用的C#,在数据绑定之前怎么判断数据文件是否存在呢???private void BindData()
    {
        string sql = "";
        sql = "select sid,cont_type, filename, filesize,stime,srcip,dstip,srcport from http_hd_tbl where " + isize + " and (stime>= "+ sstime +" and stime<="+ eetime +") and (cont_type= 'image/jpeg '||cont_type= 'image/gif '||cont_type= 'image/bmp ' ||cont_type= 'image/png ') order by sid desc";
        MySqlDataAdapter da = new MySqlDataAdapter(sql, conn);
        conn.Open();
        //前面定义了protected类型的DataSet ds = new DataSet();
        da.Fill(ds);
        //GridView1中有一列是显示图片文件的缩略图,而图片文件存储在不同的服务器上,所以在绑定到 GridView1之前,要判断数据库索引出的文件是否存在,如果不存在就要拆分字符串从而确定保存在哪一台服务器上      
        /* for (i = 0; i < ds.Tables[0].Rows.Count; i++)
        { 
        string  fname = ds.Tables[0].Rows[i]["filename"].ToString();
        ...        }*/
        
        GridView1.DataSource = ds.Tables[0].DefaultView;
        GridView1.DataBind();
        
        conn.Close();//提示数据连接关闭
    }我在前台是这样写的——还没有判断在存储在哪一台服务器上,所以会打不开图片:
<ItemTemplate>                       
  <img src="ftp://192.168.0.32/Files/<%# DataBinder.Eval(Container.DataItem, "filename") %>" width="100" height="75" border="0" alt="缩略图">
</ItemTemplate>

解决方案 »

  1.   

    ASPX:
    <ItemTemplate>                     
      <img src="ftp://192.168.0.32/Files/ <%# GetThumbnailPath(Eval("dstip"), Eval("srcport"), Eval("filename")) %>" width="100" height="75" border="0" alt="缩略图">
    </ItemTemplate>ASPX.CS:protected string GetThumbnailPath(object serverIP, object serverPort, object filepath)
    {
       return "http://" + serverIP + ":" + serverPort + "/" + filepath;
    }
      

  2.   

    Oh, SorryASPX:
    <ItemTemplate>                   
      <img src="<%# GetThumbnailPath(Eval("dstip"), Eval("srcport"), Eval("filename")) %>" width="100" height="75" border="0" alt="缩略图">
    </ItemTemplate>ASPX.CS:protected string GetThumbnailPath(object serverIP, object serverPort, object filepath)
    {
      return "ftp://" + serverIP + ":" + serverPort + "/" + filepath;
    }
      

  3.   

    判断文件是否存在:
             string FilePath="images/a.gif";
            FileInfo fi = new FileInfo(Server.MapPath(FilePath));
            if (fi.Exists)
            {
                return ...
            }
            else
            {
                return ...
            }
      

  4.   

    哦,谢谢各位, xhbmj的方法我应该用得上
    恩,明白jzywh的意思了,xhbmj与jzywh的思路刚好可以结合起来试下
    回答mengxj85,数据集基本上是不会为空的,即数据库里的索引存在的情况下,图片文件存在的位置不确定
      

  5.   

    <img src=" <%# GetThumbnailPath(Eval("dstip"), Eval("srcport"), Eval("filename")) %>" width="100" height="75" border="0" alt="缩略图"> 
    这个思路挺好的,以前没有用过
    但是必须对每一条记录都判断相应的图片文件在那台服务器上,所以要遍历:
     /* for (i = 0; i < ds.Tables[0].Rows.Count; i++) 
            { 
            .....
            }
    */
    那就得在databind()里面了,我的思路如下:
    private void BindData() 

            string sql = ""; 
            sql = ""; 
            MySqlDataAdapter da = new MySqlDataAdapter(sql, conn); 
            conn.Open(); 
            //前面定义了protected类型的DataSet ds = new DataSet(); 
            da.Fill(ds); for (i = 0; i < ds.Tables[0].Rows.Count; i++) 
     { 
        string  fname = ds.Tables[0].Rows[i]["filename"].ToString(); 
      //文件名是这种形式的:"HTTP/probe_3/20081028/07/41 TP_3_2_1_638808_20081028_07_41.jpg"
        string  FilePath=”ftp://192.168.0.32/Files/“+fname;
        FileInfo fi = new FileInfo(Server.MapPath(FilePath)); 
        if (fi.Exists) 
            { 
                return GetThumbnailPath(ip0,filename) 
            } 
            else 
            { 
             //拆分字符串,获取probe_3里面的"3"这个位置的数字(也有可能是两位数如probe_10,HTTP这一段也是会变化的,也有可能是其它的如ftp,所以必须要先通过拆分定位到/probe_3/),不知道下面这个拆分对不对
                string[] result = fname.Split('/');
                result = result[1].Split('_');
                myString = result[1].ToString();
                if (myString=”1“)
                  {
                 GetThumbnailPath(ip1,filename);
                }
                else if (myString=”2“))
                 {
                 GetThumbnailPath(ip2,filename);
                 }
                 else if (myString=”3“))
                 {
                 GetThumbnailPath(ip3,filename);
                 }        } } 
    }
    protected string GetThumbnailPath(object serverIP, object filepath) 

      return "ftp://" + serverIP + @"/Files/" + filepath; 
    }
    ASPX: 
    <ItemTemplate>                  
      <img src=" <%# GetThumbnailPath(Eval("dstip"), Eval("srcport"), Eval("filename")) %>" width="100" height="75" border="0" alt="缩略图"> 
    </ItemTemplate> 
    <%# GetThumbnailPath(Eval("dstip"), Eval("srcport"), Eval("filename")) %>
    这样写好像不行啊???!这里改怎么写啊??
      

  6.   

    问题还是出在:
    <ItemTemplate>                  
      <img src=" <%# GetThumbnailPath(Eval("dstip"),Eval("filename")) %>" width="100" height="75" border="0" alt="缩略图"> 
    </ItemTemplate> 
    <%# GetThumbnailPath(Eval("dstip"),  Eval("filename")) %> //这里用两个参数就可以了
    这样是不是可以啊:   if (fi.Exists) 
            { 
                return GetThumbnailPath(ip0,filename) 
            } 
            else 
            { 
            //拆分字符串,获取probe_3里面的"3"这个位置的数字(也有可能是两位数如probe_10,HTTP这一段也是会变化的,也有可能是其它的如ftp,所以必须要先通过拆分定位到/probe_3/),不知道下面这个拆分对不对 
                string[] result = fname.Split('/'); 
                result = result[1].Split('_'); 
                myString = result[1].ToString(); 
               string imgpath=“”;
                if (myString=”1“) 
                  { 
                imgpath=GetThumbnailPath(ip1,filename); 
                } 
                else if (myString=”2“)) 
                { 
                imgpath=GetThumbnailPath(ip2,filename); 
                } 
                else if (myString=”3“)) 
                { 
                imgpath=GetThumbnailPath(ip3,filename); 
                }         } ASPX:<img src=" <%# Eval("imgpath") %>" width="100" height="75" border="0" alt="缩略图"> <%# Eval("imgpath") %>" 这样写可以吗???
      

  7.   

    <img src=" <%# Eval("imgpath") %>" width="100" height="75" border="0" alt="缩略图"> 
    这样不知道不可以
    你说的方法是调用函数,不过和你我要用的和你说的有点出入,我要选择的ip并不是数据库里存储的东西,是另外三个固定的服务器(加上本地服务器),所以,只有在数据集的遍历中就判断文件是否存在(本地),不在的话就去另三个找
    按我在回复总的方法就会得到一个文件地址,赋给了变量imgpath=GetThumbnailPath(ip3,filename),如果这条路可行的话,那么只要将imgpath传给<img src= 就可以了!
    但是我试过几种方法都不能显示图片:
    <img src="<%=src%>" border="0" alt="<%=weburl%>">
    Response.write "<img src='"&src&"'> "
    <img src="<%src%>">
    请教下,你有什么方法吗?!