• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    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结构,然后进行操作。
    上一篇:ASP.NET在IE10中无法判断用户已登入及Session丢失问题解决方法
    下一篇:在FireFox/IE下Response中文文件名乱码问题解决方案
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯

    时间:9:00-21:00 (节假日不休)

    地址:江苏信息产业基地11号楼四层

    《增值电信业务经营许可证》 苏B2-20120278

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