2013-02-03 103 views
0

我想上传一个文件到我的FTP服务器和凭据的值是userlabel passlabel和servlabel这些都是相应的证书标签.. Passlabel和userlabel实际上是混合起来..通过用户和用户标签是密码。我想实施一个prgressbar,我不知道该怎么做,请别人帮助Progressbar上传到FTP

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

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 

回答

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() 
+0

在所有的PartsCount和PartsLength下有错误? – Kraxed

+0

是否声明变量? 'Dim PartsCount,PartLength as Integer' – alu