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

 更新时间:2013年02月16日 08:50:45   作者:   我要评论
有这样一个需求:金沙国际官网中存储的是照片所在的绝对路径(可以不在系统所在路径下),Image控件动态加载路径下的图片,另类实现方法,感兴趣的朋友可以参考下,或许本文对你学习二进制流有所帮助
我要实现这样一个需求:金沙国际官网中存储的是照片所在的绝对路径(可以不在系统所在路径下),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结构,然后进行操作。

相关文章

  • .Net学习笔记之Layui多图片上传功能

    .Net学习笔记之Layui多图片上传功能

    这篇文章主要给大家介绍了关于.Net学习笔记之Layui多图片上传功能的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用.Net具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-07-07
  • 区分ASP.NET中get方法和post方法

    区分ASP.NET中get方法和post方法

    我们都知道,get是从服务器上获取数据,post是向服务器上传数据。本文主要介绍ASP.NET中get方法和post方法的区别,需要的朋友可以参考下
    2015-10-10
  • ASP.NET实现大文件上传功能

    ASP.NET实现大文件上传功能

    这篇文章主要为大家详细介绍了ASP.NET实现大文件上传功能,解决了 ASP.NET 中的大文件上传问题,感兴趣的朋友可以参考一下
    2016-07-07
  • Ajax实现异步刷新验证用户名是否已存在的具体方法

    Ajax实现异步刷新验证用户名是否已存在的具体方法

    由于要做一个注册页面,看到许多网站上都是使用Ajax异步刷新验证用户名是否可用的,所以自己也动手做一个小实例
    2014-02-02
  • asp.net提取多层嵌套json数据的方法

    asp.net提取多层嵌套json数据的方法

    这篇文章主要介绍了asp.net提取多层嵌套json数据的方法,结合实例形式较为详细的分析了asp.net解析json格式数据的步骤与相关操作技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2016-06-06
  • jquery.pagination +JSON 动态无刷新分页实现代码

    jquery.pagination +JSON 动态无刷新分页实现代码

    jquery.pagination +JSON 动态无刷新分页实现代码,需要的朋友可以参考下。
    2011-12-12
  • Asp.Mvc 2.0用户客户端验证实例讲解(3)

    Asp.Mvc 2.0用户客户端验证实例讲解(3)

    这篇文章主要介绍了 Asp.Mvc 2.0实现客户端验证功能,本文使用jquery.validate插件进行验证,需要的朋友可以参考下
    2015-08-08
  • asp.net文件上传示例分享

    asp.net文件上传示例分享

    ASP.NET依托.net framework类库,封装了大量的功能,使得上传文件非常简单,主要有以下三种基本方法,需要的朋友可以参考下
    2014-02-02
  • Amazing ASP.NET Core 2.0

    Amazing ASP.NET Core 2.0

    Amazing ASP.NET Core 2.0,这篇文章主要介绍了ASP.NET Core 2.0 版本的新特性,感兴趣的小伙伴们可以参考一下
    2017-05-05
  • ASP.net WebAPI跨域调用问题的解决方法

    ASP.net WebAPI跨域调用问题的解决方法

    在做Web开发中,常常会遇到跨域的问题,到目前为止,已经有非常多的跨域解决方案。下面这篇文章主要给大家介绍了关于ASP.net WebAPI跨域调用问题的解决方法,文中通过示例代码介绍的非常详细,需要的朋友可以参考下。
    2018-03-03

最新评论