如何使用FtpWebResponse获取文件的大小

Vivek S.

尝试从中下载文件FTP以获取我计划实现backgroundWorker的下载进度,以下代码将kb在UI中显示下载进度,速度,下载以下是我编写的代码backgroundWorker_doWork

 'Creating the request and getting the response
    Dim theResponse As FtpWebResponse
    Dim theRequest As FtpWebRequest
    Try 
        'Checks if the file exist
        theRequest = WebRequest.Create(Me.txtFileName.Text)
        theResponse = theRequest.GetResponse
    Catch ex As Exception
        MessageBox.Show("An error occurred while downloading file. Possible causes:" & ControlChars.CrLf & _
                        "1) File doesn't exist" & ControlChars.CrLf & _
                        "2) Remote server error", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)

        Dim cancelDelegate As New DownloadCompleteSafe(AddressOf DownloadComplete)
        Me.Invoke(cancelDelegate, True)
        Exit Sub
    End Try

    Dim length As Long = theResponse.ContentLength 'Size of the response (in bytes)
    Dim safedelegate As New ChangeTextsSafe(AddressOf ChangeTexts)
    Me.Invoke(safedelegate, length, 0, 0, 0) 'Invoke the TreadsafeDelegate
    Dim writeStream As New IO.FileStream(Me.whereToSave, IO.FileMode.Create)
    'Replacement for Stream.Position (webResponse stream doesn't support seek)
    Dim nRead As Integer
    'To calculate the download speed
    Dim speedtimer As New Stopwatch
    Dim currentspeed As Double = -1
    Dim readings As Integer = 0

    Do
        If BackgroundWorker1.CancellationPending Then 'If user abort download
            Exit Do
        End If
        speedtimer.Start()
        Dim readBytes(4095) As Byte
        Dim bytesread As Integer = theResponse.GetResponseStream.Read(readBytes, 0, 4096)
        nRead += bytesread
        Dim percent As Short = (nRead * 100) / length
        Me.Invoke(safedelegate, length, nRead, percent, currentspeed)
        If bytesread = 0 Then Exit Do
        writeStream.Write(readBytes, 0, bytesread)
        speedtimer.Stop()
        readings += 1
        If readings >= 5 Then 'For increase precision, the speed it's calculated only every five cicles
            currentspeed = 20480 / (speedtimer.ElapsedMilliseconds / 1000)
            speedtimer.Reset()
            readings = 0
        End If
    Loop

    'Close the streams
    theResponse.GetResponseStream.Close()
    writeStream.Close()

    If Me.BackgroundWorker1.CancellationPending Then
        IO.File.Delete(Me.whereToSave)
        Dim cancelDelegate As New DownloadCompleteSafe(AddressOf DownloadComplete)
        Me.Invoke(cancelDelegate, True)
        Exit Sub
    End If

    Dim completeDelegate As New DownloadCompleteSafe(AddressOf DownloadComplete)
    Me.Invoke(completeDelegate, False)
  • 以下是我得到的错误 在此处输入图片说明
  • Dim length As Long = theResponse.ContentLength 得到 -1
  • 例如

ftp://用户名:[email protected]/masters/5/party/party.csv

  • 上面给出的是ftp Url正在下载的文件,这party.csv是要下载的文件注意:问题是在我的情况下,当获取要下载的文件的文件大小时party,csvDim length As Long = theResponse.ContentLength的大小这里theResponse.ContentLength获取-1文件的实际大小是420KB如果我更改Dim length As Long =430080(420kb = 430080bytes),代码将起作用
Vivek S.

找到以下解决方案以获取查找方法的确切方法 file's size

    Dim request As FtpWebRequest = DirectCast(WebRequest.Create(Me.txtFileName.Text), FtpWebRequest)
    request.Method = WebRequestMethods.Ftp.GetFileSize
    Dim response As FtpWebResponse = DirectCast(request.GetResponse(), FtpWebResponse)
    Dim fileSize As Long = response.ContentLength

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Django:如何使用FilePathField获取文件大小

来自分类Dev

如何使用C#获取文件的大小?

来自分类Dev

如何使用FtpWebResponse创建WebException以进行测试?

来自分类Dev

如何获取文件大小

来自分类Dev

如何获取使用XMLStreamWriter生成的文件的文件大小?

来自分类Dev

上传文件前使用ajaxSubmit时如何获取文件大小

来自分类Dev

如何使用Javascript获取网页上图像的文件大小?

来自分类Dev

使用NSFileManager获取文件大小

来自分类Dev

即使修改了文件名,如何使用VBScript获取任何文件类型的文件大小?

来自分类Dev

如何使用Scala获取HDFS文件系统中目录的磁盘使用率或文件大小

来自分类Dev

如何在Linux上使用SSH获取文件/文件夹的大小?

来自分类Dev

如何获取与URL对应的文件的大小

来自分类Dev

下载前如何获取文件大小

来自分类Dev

如何获取FileInfo中文件的大小?

来自分类Dev

如何在Excel中获取文件大小?

来自分类Dev

使用SharpSSH从SFTP获取文件大小

来自分类Dev

在使用javascript上传之前获取文件大小

来自分类Dev

使用FtpLib获取文件夹大小

来自分类Dev

使用Python发布前获取文件大小

来自分类Dev

在使用javascript上传之前获取文件大小

来自分类Dev

仅使用du文件获取大小

来自分类Dev

使用Google Drive API获取文件大小

来自分类Dev

如何在oracle中获取文件大小或对象大小

来自分类Dev

如何使用bash获取带有fo o.bar名称的文件夹的大小?

来自分类Dev

如何使用libcurl获取ftp服务器上的文件大小?

来自分类Dev

如何在不使用 fseek 或 stat 的情况下在 C 中获取文件大小?

来自分类Dev

使用FtpWebResponse下载文件-即使从ftp服务器中删除文件,也可以下载文件?

来自分类Dev

使用FtpWebResponse下载文件-即使从ftp服务器中删除文件,也可以下载文件?

来自分类Dev

如何从GPG加密的文件中获取原始文件大小?

Related 相关文章

  1. 1

    Django:如何使用FilePathField获取文件大小

  2. 2

    如何使用C#获取文件的大小?

  3. 3

    如何使用FtpWebResponse创建WebException以进行测试?

  4. 4

    如何获取文件大小

  5. 5

    如何获取使用XMLStreamWriter生成的文件的文件大小?

  6. 6

    上传文件前使用ajaxSubmit时如何获取文件大小

  7. 7

    如何使用Javascript获取网页上图像的文件大小?

  8. 8

    使用NSFileManager获取文件大小

  9. 9

    即使修改了文件名,如何使用VBScript获取任何文件类型的文件大小?

  10. 10

    如何使用Scala获取HDFS文件系统中目录的磁盘使用率或文件大小

  11. 11

    如何在Linux上使用SSH获取文件/文件夹的大小?

  12. 12

    如何获取与URL对应的文件的大小

  13. 13

    下载前如何获取文件大小

  14. 14

    如何获取FileInfo中文件的大小?

  15. 15

    如何在Excel中获取文件大小?

  16. 16

    使用SharpSSH从SFTP获取文件大小

  17. 17

    在使用javascript上传之前获取文件大小

  18. 18

    使用FtpLib获取文件夹大小

  19. 19

    使用Python发布前获取文件大小

  20. 20

    在使用javascript上传之前获取文件大小

  21. 21

    仅使用du文件获取大小

  22. 22

    使用Google Drive API获取文件大小

  23. 23

    如何在oracle中获取文件大小或对象大小

  24. 24

    如何使用bash获取带有fo o.bar名称的文件夹的大小?

  25. 25

    如何使用libcurl获取ftp服务器上的文件大小?

  26. 26

    如何在不使用 fseek 或 stat 的情况下在 C 中获取文件大小?

  27. 27

    使用FtpWebResponse下载文件-即使从ftp服务器中删除文件,也可以下载文件?

  28. 28

    使用FtpWebResponse下载文件-即使从ftp服务器中删除文件,也可以下载文件?

  29. 29

    如何从GPG加密的文件中获取原始文件大小?

热门标签

归档