进度条上传到FTP

时间:2013-02-03 18:14:53

标签: vb.net

我想将文件上传到我的FTP服务器,凭据的值是userlabel passlabel和servlabel这些是凭证的所有相应标签.. Passlabel和userlabel实际上是混合的.. pass是user和userlabel is密码。我想实施一个prgressbar,我不知道如何做某人请帮助

到目前为止,这是我的代码。

Private Sub BW_DoWork(ByVal sender As System.Object, 
                      ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BW.DoWork

    Dim clsRequest As System.Net.FtpWebRequest = _
            DirectCast(System.Net.WebRequest.Create(ServLabel.Text & 
                                                    TextBox1.Text), 
                                                    System.Net.FtpWebRequest)

    clsRequest.Credentials = New System.Net.NetworkCredential(PassLabel.Text, UserLabel.Text)
    clsRequest.Method = System.Net.WebRequestMethods.Ftp.UploadFile

    ' read in file...
    Dim bFile() As Byte = System.IO.File.ReadAllBytes(txtFile.Text)

    ' upload file...
    Dim clsStream As System.IO.Stream = _
        clsRequest.GetRequestStream()

    clsStream.Write(bFile, 0, bFile.Length)
    clsStream.Close()
    clsStream.Dispose()

    BW.ReportProgress(clsStream.Position.ToString)

    MsgBox("File Is Now In Database", MsgBoxStyle.OkOnly, "Upload Complete")

End Sub

1 个答案:

答案 0 :(得分:0)

您只能将数组bFile的一部分传递给clsStream.Write()方法并重复此方法,直到所有部分都已写入流中。

PartsCount = 100

PartsLength = bFile.Length \ PartsCount     
If PartLength * PartsCount = bFile.Length Then PartsCount -= 1

For i as Integer = 0 to PartsCount
   If i <> PartsCount Then
      clsStream.Write(bFile, i * PartsLength, PartLength)
   Else
      clsStream.Write(bFile, i * PartsLength, bFile.Length - (i * PartsLength))
   End If 

   clsStream.Flush()

   'calculate the progess here
Next

clsStream.Close()