【问题标题】:Request file size before download it下载前请求文件大小
【发布时间】:2013-06-23 08:51:42
【问题描述】:

我目前正在使用 Net.WebClient 从 Internet 下载文件。现在,我想做另一件事。 我只有在这个 sub 中使用参数 e.TotalBytesToReceive 开始下载后才能知道飞行大小

    Private Sub W_DownloadProgressChanged(ByVal sender As Object, ByVal e As _
    Net.DownloadProgressChangedEventArgs) Handles W.DownloadProgressChanged

如何在不下载的情况下获取链接的文件大小参数?

【问题讨论】:

  • 正确的解决方案是here,其中对文件的请求是明确要求只请求 HEAD。

标签: vb.net webclient


【解决方案1】:

使用WebClient ResponseHeaders

Public Shared Function GetFileSize(url As String) As Long
    Using obj As New WebClient()
        Using s As Stream = obj.OpenRead(url)
            Return Long.Parse(obj.ResponseHeaders("Content-Length").ToString())
        End Using
    End Using
End Function

【讨论】:

  • 这很慢,因为我非常有信心,OpenRead 会完全下载文件,然后为您提供流。你能用一个大文件测试它吗(我不能从这里),只是为了确定?
  • 我怀疑它会下载整个文件以获得它的大小。获得权重的时间对于 1.2 MB 的文件和 400> MB 的文件是相等的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-08
  • 2013-06-29
  • 2011-06-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多