0

FTP サーバーにファイルをアップロードしたいのですが、資格情報の値は userlabel passlabel と servlabel です。これらはすべて、資格情報に対応するラベルです。パスラベルとユーザーラベルは実際には混同されています。パスはユーザーで、ユーザーラベルはパスワードです。プログレスバーを実装したいのですが、やり方がわかりません 誰か助けてください

これまでの私のコードは次のとおりです。

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
4

1 に答える 1

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()
于 2013-02-03T18:24:15.040 に答える