Wpf 使用FtpWebRequest上载Progressbar
我有一个程序,当文件被放到表单上时,它会将文件上传到服务器上,这样我们的客户就可以轻松地将大文件发送给我们。 我让它大部分工作,但我想有一个进度条,让用户知道它的工作,而不是让它只是坐在那里5分钟,而文件在后台悄悄上传 我会很高兴有进度条脉冲,这样看起来程序正在工作,而不是冻结。如果我能显示实际状态,那就更好了 我的代码:Wpf 使用FtpWebRequest上载Progressbar,wpf,ftpwebrequest,Wpf,Ftpwebrequest,我有一个程序,当文件被放到表单上时,它会将文件上传到服务器上,这样我们的客户就可以轻松地将大文件发送给我们。 我让它大部分工作,但我想有一个进度条,让用户知道它的工作,而不是让它只是坐在那里5分钟,而文件在后台悄悄上传 我会很高兴有进度条脉冲,这样看起来程序正在工作,而不是冻结。如果我能显示实际状态,那就更好了 我的代码: Private Sub Grid1_Drop(sender As System.Object, e As System.Windows.DragEventArgs) Hand
Private Sub Grid1_Drop(sender As System.Object, e As System.Windows.DragEventArgs) Handles Grid1.Drop
Dim sFileInfo As System.IO.FileInfo
Dim sStatus As String = ""
If e.Data.GetDataPresent("FileDrop") Then
Try
Dim theFiles() As String = CType(e.Data.GetData("FileDrop", True), String())
For Each file As String In theFiles
sFileInfo = New System.IO.FileInfo(file)
If UploadFile(txtUsername.Text, sFileInfo) Then
lstFileList.Items.Add(file & " - Uploaded")
Else
lstFileList.Items.Add(file & " - Upload Failed")
End If
Next
Catch ex As Exception
MsgBox(ex.Message)
End Try
End If
End Sub
Public Function UploadFile(ByVal User As String, ByVal oFile As FileInfo) As Boolean
Dim ftpRequest As FtpWebRequest
Dim ftpResponse As FtpWebResponse
Try
ftpRequest = CType(FtpWebRequest.Create(Base + User + "/" + oFile.Name), FtpWebRequest)
ftpRequest.Method = WebRequestMethods.Ftp.UploadFile
ftpRequest.Proxy = Nothing
ftpRequest.UseBinary = True
ftpRequest.Credentials = Cred
ftpRequest.KeepAlive = KeepAlive
ftpRequest.EnableSsl = UseSSL
If UseSSL Then ServicePointManager.ServerCertificateValidationCallback = New RemoteCertificateValidationCallback(AddressOf ValidateServerCertificate)
Dim fileContents(oFile.Length) As Byte
Using fr As FileStream = oFile.OpenRead
fr.Read(fileContents, 0, Convert.ToInt32(oFile.Length))
End Using
Using writer As Stream = ftpRequest.GetRequestStream
writer.Write(fileContents, 0, fileContents.Length)
End Using
ftpResponse = CType(ftpRequest.GetResponse, FtpWebResponse)
ftpResponse.Close()
ftpRequest = Nothing
Return True
Catch ex As WebException
Return False
End Try
End Function
请看一下后台工作人员类。这将释放您的ui,以便您可以添加进度条控件,并在上载文件时对其进行动画处理是的,我以前使用过它,我想它可能会在这里派上用场,但我不确定如何让FTPWebRequest报告上载了多少文件。可能需要某种缓冲,但我还没有找到很多好的例子。是的,我倾向于使用字幕风格,或循环进度指示器,向用户显示实际正在发生的事情。如果你上传多个文件,至少每个文件有一个进度,并缩放所有文件=满栏。报告正在进行的文件的名称和文件的大小。