以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  关于高级指南显示图片的问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=133069)

--  作者:jackchan120925
--  发布时间:2019/4/5 17:03:00
--  关于高级指南显示图片的问题
老师请教下,高级指南中对于图片的显示有如下代码


图片点击可在新窗口打开查看此主题相关图片如下:zzz1111111111.png
图片点击可在新窗口打开查看

Dim fl As String = "d:\\web\\" & e.path \'合成含路径的文件名
If
filesys.FileExists(fl) \'如果是请求一个已经存在的文件
    e.WriteFile(fl)
\'
则发送此文件
Else

    Dim sb As New StringBuilder
    sb.Appendline(
"
我想显示一个图片<br/><br/>")
    sb.AppendLine("<img src=\'abc.jpg\'>")
    e.WriteString(sb.ToString())

End
If

从第一行开始, e.path(假设登录网址为 127.0.0.1/a.htm),那么 fl的值就变成了 d:\\web\\a.htm, 而图片名字为abc.jpg, 也就是代码1部分不会执行。执行代码2的话,图片还是不会显示呀

--  作者:有点蓝
--  发布时间:2019/4/6 10:34:00
--  
假设登录网址为 127.0.0.1/a.htm,a.htm里需要显示一个图片abc.jpg,那么浏览器就会向服务器发送一个请求,路径如:127.0.0.1/abc.jpg。也就是说浏览器会根据网页需要的资料进行多次请求,然后服务端就会触发多次。
--  作者:jackchan120925
--  发布时间:2019/4/6 12:11:00
--  
老师您好,还有有个问题

假设登录网址为 127.0.0.1/a.htm,a.htm里需要显示一个图片abc.jpg。 那么第一次在浏览器输入这个网址,执行如下部分代码(else部分)
    Dim sb As New StringBuilder
    sb.Appendline(
"
我想显示一个图片<br/><br/>")
    sb.AppendLine("<img src=\'abc.jpg\'>")
    e.WriteString(sb.ToString())

然后代码执行到 "<img src=\'abc.jpg\'>"), 相当于又向服务器发送了一个请求,用地址:127.0.0.1/abc.jpg,那么这次就执行如下代码
    e.WriteFile(fl) \'则发送此文件

这么理解不知对不对?

但是按如上理解还是有个问题,就是第二次执行 e.WriteFile(fl),那么网页上应该是只有图片,不应该有“我想显示一个图片”这几个字啊?


我的理解是,两个请求分别生成了2个网页,第二个网页应该完全把第一个网页取代掉,而不是并存才对。


[此贴子已经被作者于2019/4/6 12:11:11编辑过]

--  作者:有点蓝
--  发布时间:2019/4/6 14:03:00
--  
前半部分理解对了。但是并不是每次请求都会返回一个网页。这样的话,web开发就没有必要存在了。请求什么就得到什么,请求一个文件,就只得到这个文件的数据,至于这个数据怎么合并到原来的网页中,那是浏览器的工作,我们不需要关心。