Foxtable(狐表)用户栏目专家坐堂 → 一条代码的逻辑没看懂


  共有2309人关注过本帖树形打印复制链接

主题:一条代码的逻辑没看懂

帅哥哟,离线,有人找我吗?
sky-18
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:655 积分:5004 威望:0 精华:0 注册:2011/11/26 17:46:00
一条代码的逻辑没看懂  发帖心情 Post By: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
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:655 积分:5004 威望:0 精华:0 注册:2011/11/26 17:46:00
  发帖心情 Post By:2017/8/6 9:22:00 [只看该作者]

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

看来是我哪里没搞对了。

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


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/8/6 11:11:00 [只看该作者]

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

 

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

 

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


 回到顶部
帅哥哟,离线,有人找我吗?
hgzvip
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:74 积分:800 威望:0 精华:0 注册:2015/9/5 18:02:00
  发帖心情 Post By: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”中显示图片,然后结束。

看帮助确实看不太明白。

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

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/11/9 20:23:00 [只看该作者]

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

 

 


 回到顶部
帅哥哟,离线,有人找我吗?
hgzvip
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:74 积分:800 威望:0 精华:0 注册:2015/9/5 18:02:00
  发帖心情 Post By: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,这次是带着完整的路径去的,所以能把图片下载下来并显示了。

这样理解不知道对不对



 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/11/9 21:17:00 [只看该作者]

 是的,正确。

 回到顶部
帅哥哟,离线,有人找我吗?
sky-18
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:655 积分:5004 威望:0 精华:0 注册:2011/11/26 17:46:00
  发帖心情 Post By:2018/3/19 0:56:00 [只看该作者]

正解!!

 回到顶部