环境是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>
{
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>
<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;
}
<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;
}
string FilePath="images/a.gif";
FileInfo fi = new FileInfo(Server.MapPath(FilePath));
if (fi.Exists)
{
return ...
}
else
{
return ...
}
恩,明白jzywh的意思了,xhbmj与jzywh的思路刚好可以结合起来试下
回答mengxj85,数据集基本上是不会为空的,即数据库里的索引存在的情况下,图片文件存在的位置不确定
这个思路挺好的,以前没有用过
但是必须对每一条记录都判断相应的图片文件在那台服务器上,所以要遍历:
/* 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")) %>
这样写好像不行啊???!这里改怎么写啊??
<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") %>" 这样写可以吗???
这样不知道不可以
你说的方法是调用函数,不过和你我要用的和你说的有点出入,我要选择的ip并不是数据库里存储的东西,是另外三个固定的服务器(加上本地服务器),所以,只有在数据集的遍历中就判断文件是否存在(本地),不在的话就去另三个找
按我在回复总的方法就会得到一个文件地址,赋给了变量imgpath=GetThumbnailPath(ip3,filename),如果这条路可行的话,那么只要将imgpath传给<img src= 就可以了!
但是我试过几种方法都不能显示图片:
<img src="<%=src%>" border="0" alt="<%=weburl%>">
Response.write "<img src='"&src&"'> "
<img src="<%src%>">
请教下,你有什么方法吗?!