当前位置: 移动技术网 > IT编程>开发语言>.net > Image显示服务器上任意绝对路径下的图片(采用二进制流实现)

Image显示服务器上任意绝对路径下的图片(采用二进制流实现)

2017年12月12日  | 移动技术网IT编程  | 我要评论

阿姨丝袜,试听音乐,韦斯利.a.拉姆齐

我要实现这样一个需求:数据库中存储的是照片所在的绝对路径(可以不在系统所在路径下),image控件动态加载路径下的图片。

看到这个题目,有些人会说,这还不简单啊,将url直接设置成绝对路径不就行了啊。我只能说,如果你这样说,那么只能说明你没有经过思考,甚至于,还没有搞清楚web开发中前台代码和后台代码到底是什么意思,但是这种做法,在自己做的时候(未架到iis),搜狗浏览器是可以显示图片的(仅此一款可以显示,所以这种做法没有意义)。

image控件是在system.web.ui.webcontrols命名控件中,所以不能像在winform中那样通过byte[]直接显示图片(个人也有点不太明白这句话,谁如果明白可以解释一下)。找到的这种方法,是采取将图片读取,然后将读进来的二进制流写到一个页面上,然后将image的url设置为此页面。下面是我的demo实现代码。
前台代码:
复制代码 代码如下:

<head runat="server">
<title></title>
<script src="jquery-1.7.1.js" type="text/javascript"></script>
<script type="text/javascript">
function showp(obj) {
$("#image1")[0].src = "showpic.aspx?url=" + obj.id;
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<input id="e:\\1.jpg" type="button" value="button" onclick="showp(this);" />
<asp:image id="image1" runat="server" />
</div>
</form>
</body>
</html>

showpic.aspx的前台代码为空,下面是showpic.aspx的后台代码:
复制代码 代码如下:

public partial class showpic : system.web.ui.page
{
protected void page_load(object sender, eventargs e)
{
#region "根据照片路径,将照片转为二进制数组"
string strurl = request.querystring["url"];
// 以二进制方式读文件
filestream afile = new filestream(strurl, filemode.openorcreate, fileaccess.readwrite);
// 创建一个二进制数据流读入器,和打开的文件关联
binaryreader brmyfile = new binaryreader(afile);
// 把文件指针重新定位到文件的开始
brmyfile.basestream.seek(0, seekorigin.begin);
//获取照片的字节数组
byte[] photo = brmyfile.readbytes(convert.toint32(afile.length.tostring()));
// 关闭以上new的各个对象
brmyfile.close();
#endregion
response.binarywrite(photo);
}
}

在上面我把照片的路径赋给了按钮id,然后将路径作为参数来调用showpic.aspx,在showpic的后台代码中,将照片以二维数组的形式写到页面上,如果你直接打开这个页面,会显示乱码。

然后将image的url设置为这个页面,此时会显示图片。我通过按钮id实现了一下动态加载图片,到具体应用,还有一点点传参的小问题,关于javascript传参,这个还是需要大家自己做个例子,通过javascript调试工具,来了解dom结构,然后进行操作。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网