以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  一条代码的逻辑没看懂  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=104825)

--  作者:sky-18
--  发布时间:2017/8/6 8:09:00
--  一条代码的逻辑没看懂

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

 

这是帮助文件里关于移动开发的代码。

不过想了半天都没想明白。

就是那个if语句,如果文件存在则发送文件,如果不存在则按html语句生成网页。这是什么逻辑啊?如果文件存在,按代码逻辑网页还不显示了?

还是我思路哪里不对了?


--  作者:sky-18
--  发布时间:2017/8/6 9:22:00
--  

刚才继续往后看,发现后面的代码都是这样写的。

看来是我哪里没搞对了。

老师能不能指点一下。我有点短路了


--  作者:有点甜
--  发布时间:2017/8/6 11:11:00
--  

网页的元素,比如 <img src=\'abc.jpg\'> 是需要下载才能看到的。

 

会给服务器发送一个请求,请求abc.jpg文件,服务要把这个文件下载,用代码 e.WriteFile(fl)

 

实际上会触发两次httprequest,第一次生成网页,第二次下载图片。


--  作者:hgzvip
--  发布时间:2017/11/9 20:18:00
--  
菜鸟一枚,
我把代码改了一下来测试(增加了四个MessageBox):
Dim fl As String = "d:\\web\\" & e.path \'合成含路径的文件名
    MessageBox.Show(fl) \'显示路径
If filesys.FileExists(fl) \'如果是请求一个已经存在的文件
    MessageBox.Show("1")
    e.WriteFile(fl) \'则发送此文件
Else
    MessageBox.Show("2")
    Dim sb As New StringBuilder
    sb.Appendline("我想显示一个图片<br/><br/>")
    sb.AppendLine("<img src=\'abc.jpg\'>")
    e.WriteString(sb.ToString())
    MessageBox.Show("3")
End If

然后在浏览器中加载的时候,弹窗是这样一个顺序:
d:\\web\\【浏览器空白】 → 2【浏览器空白】 → 3 【浏览器出现文字‘我想显示一个图片’,没有图片】 → d:\\web\\abc.jpg 【浏览器只有文字】 → 1 【只有文字】 → 【浏览器出现图片】

照这样看,代码是先合并了一个不完整的路径“d:\\web\\”,然后执行了“Else”,出现了文字,没有图片,并在这里获得了一个e.path,获取了一个完整的路径“d:\\web\\abc.jpg”,最后又执行一次,在“If”中显示图片,然后结束。

看帮助确实看不太明白。

在两个地方回了这个贴,多一点见光的机会,希望对大家有帮助。

--  作者:有点甜
--  发布时间:2017/11/9 20:23:00
--  

嗯嗯,理解不了,那就加入msgbox一个个弹出就好了。

 

 


--  作者:hgzvip
--  发布时间:2017/11/9 20:37:00
--  
再回头看帮助文件《我想显示一个图片》,突然理解了文中所说的:

浏览器其实是分两步来显示这个网页的:
1、首先获取网页内容:
我想显示一个图片<br/>
<img src=\'abc.jpg\'>
2、然后浏览器解析网页内容,发现要显示一个图片"abc.jpg",如是又向服务器发送访问请求:
http://127.0.0.1/abc.jpg

正如版主所言,httprequest被触发了两次:

第一次是我们访问127.0.0.1的时候,浏览器获得了网页的代码:
我想显示一个图片<br/>
<img src=\'abc.jpg\'>
然后浏览器开始解析这些内容并试图显示,发现有一个图片要显示(第二行),于是又去访问一次127.0.0.1,这次是带着完整的路径去的,所以能把图片下载下来并显示了。

这样理解不知道对不对



--  作者:有点甜
--  发布时间:2017/11/9 21:17:00
--  
 是的,正确。
--  作者:sky-18
--  发布时间:2018/3/19 0:56:00
--  
正解!!