您好,欢迎来到UU财经。
搜索
您的当前位置:首页Image显示服务器上任意绝对路径下的图片(采用二进制流实现)

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

来源:UU财经


我要实现这样一个需求:数据库中存储的是照片所在的绝对路径(可以不在系统所在路径下),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结构,然后进行操作。

UU财经还为您提供以下相关内容希望对您有帮助:

正常php上传图片要转成base编码么,为什么要这么做?

常见做法:直接上传并以二进制格式存储:这是处理图片上传的常见做法。图片通常被放置在云存储服务中,而数据库中仅存储图片的相对或绝对路径。这种策略减少了存储空间的需求,同时避免了频繁的HTTP请求,提高了系统的整体性能。使用Base编码的情况:减少服务器请求次数:如果在数据库中直接存储Base编码的图片字符串,

请高手指教,为什么gridview里面输入了 &lt;asp:Image ID="Image1" runat=...

1、首先你的“房间图片”是否就是数据库里面的表列名。对策就是更改数据库列名或者EVAL值。2、数据库里面存储的房间图片字符串是否是图片路径或者是图片二进制代码。3、数据库存储的图片路径是否因绝对路径或者是相对路径问题导致无法显示。预览时右键看红叉号属性,看路径是否正确。4、数据库连接后你是否...

django数据库怎么储存图片?

访问的时候,前面可以拼接域名和指定的路径,这些后台可以轻松获取到,然后拼接上服务器的路径,我们就可以直接在网页上访问到图片了。这是很常见的图片数据库保存方式,和直接把图片的二进制存入数据库,这样的方式便于检索,占用空间小。当然,目前主流都采用oss来单独存储文件了,就是有专门的文件服务器,...

...要在java程序的界面上面显示出图片,有谁知道怎么操作么?

1.只放文件名。而你要显示的图片,在固定的目录中。(这样不能有重名的图片)2.存放图片的绝对路径。(这样,如果图片不存在了,就不会显示了)3.数据库字段是BLOB类型的,存图片的二进制数据,使用时,从数据库中读取出来流对象。是在本地临时生成一个,还是直接用这个流创建IMAGE对象都可以。给你...

...图片控件,怎么把数据库中的图片通过控件显示出来

获取图片数据后,将其转换为二进制文件格式,并保存到计算机的指定路径,例如C:\Temp\image.jpg。接着,在PB中,你可以使用以下代码来设置picture控件的图片属性:pic控件名.image = FILEPATH("C:\Temp\image.jpg", "C:\Temp")这样,你就可以将数据库中的图片通过PB中的picture控件显示出来了。需要...

网站怎么上传ftp网站怎么上传视频

3、主要是使用二进制来传输文件,--&gt;bin--&gt;quotetpyec1381这个意思是指定服务器端的代码页,如果传输的是IFS流文件,不用做转换,直接用BINARY的模式传输文件。不会出现编码错误。4、--&gt;lcdD:Documentdataupload这个命令主要是进去本地文件夹目录用来上传文件的本地路径目录。5、进入主机的目录,也就是...

【Web漏洞探索】目录遍历漏洞

程序系统在实现上没有过滤用户输入的../之类的目录跳转符,允许攻击者通过提交目录跳转符来遍历服务器上的任意文件。比如:http://www.test.com/index.php?file=image1.jpg,服务器拼接成c://test/static/imgs/image1.jpg,然后web系统将读取的内容返回给攻击者。如果对文件名称的安全性验证不足,...

请问如何从mysql数据库中读取图片路径然后将图片显示在Jsp页面上

数据库里只存对应的照片地址啦···比如 upload/images/xxx.jpg JSP页面就这样显示咯 &lt; String imgUrl = “upload/images/xxx.jpg”;//这个地址是你实际从数据库里取出来的,,如果怕照片显示不出来,加上绝对路径request.getContextPath()+"/"+imgUrl %&gt; &lt;img src="&lt;%=imgUrl %&gt;" alt="...

node-red advanced-ftp 获取文件内容

、用户名/密码或密钥认证(若启用SFTP)。• 选择连接类型:FTP(明文)或SFTP(加密),建议优先使用SFTP以保障安全。二、设置“获取文件内容”操作1. 选择操作类型:在节点配置的操作(Operation)下拉菜单中,选择“Get File”(获取文件)。2. 文件路径与参数:• 远程文件路径:填写...

怎样用asp实现图片上传到文件夹,路径保存在access数据库中

'Formfield 上传表单的"file"域名 Path' 要保存文件的服务器绝对路径,形式为:"d:\path\subpath"或"d:\path\subpath\"'MaxSize 上传文件的最大长度,以KByte为单位' SavType 服务器保存文件的方式:'0 唯一文件名方式,如果有同名则自动改名;'1 报错方式,如果有同名则出错;'2...

Copyright © 2019- uude.cn 版权所有

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务