以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  web下载文件的问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=165941)

--  作者:lgzhao
--  发布时间:2021/5/16 14:37:00
--  web下载文件的问题
今年升版之后,用hc.getfile() 从web服务端请求下载文件,服务端即使使用e.writestring("  ")而不发送e.writefile,客户端那里还是生成一个假的文件。

这样一来hf.getfile()返回的永远是true。

很多之前的判断逻辑都不适用了。是不是这次foxtable升版之后在这里的逻辑需要重新考虑一下?

我知道这个改变是之前服务器推送大小为零的空文件导致报错,但这么改后的逻辑也不符合实际使用,带来了更多的问题。

--  作者:lgzhao
--  发布时间:2021/5/16 14:53:00
--  
此外 hc.skiperro项似乎不起作用。

如果我用hc.getdata(),当服务器端直接不响应时,客户端这头还是跳出错误提示404
这样的话这个属性的作用就没有发挥出来。

--  作者:有点蓝
--  发布时间:2021/5/16 21:01:00
--  
回1楼,结合StatusCode使用即可

httprequest
Select Case e.Path
    Case "test.htm"
        e.Response.StatusCode = "404"
        e.WriteString("")
End Select


客户端调用
Dim hc As New HttpClient("http://127.0.0.1/test.htm")
hc.SkipError = True
If hc.GetFile("c:\\data\\123.jpg") Then
    MessageBox.show("文件下载成功","提示")
Else
    MessageBox.show("文件下载失败","提示")
End If
Output.Show("hc.StatusCode=" & hc.StatusCode)

回2楼,我测试SkipError 是有效的
Dim hc As New HttpClient("http://127.0.0.1/test.htm")
hc.SkipError = True
hc.GetData
Output.Show("hc.StatusCode=" & hc.StatusCode)