Hallo,
Ich arbeite gerade an einem FTP Up/Download Programm, es funkrioniert ganz gut, aber da ich noch eine "unsaubere" schreibweise habe, fände ich es nett, wenn ihr mir sagen würdet was ich noch ausbessern kann bzw. wie es sauberer wäre. Das Programm ist noch nicht ganz fertig, kommt noch eine voraussichtliche Restzeit Rechnung rein. Aber wenn ich was ändern sollte dann lieber jetzt als später.
mfG
Derfuhr
Ich arbeite gerade an einem FTP Up/Download Programm, es funkrioniert ganz gut, aber da ich noch eine "unsaubere" schreibweise habe, fände ich es nett, wenn ihr mir sagen würdet was ich noch ausbessern kann bzw. wie es sauberer wäre. Das Programm ist noch nicht ganz fertig, kommt noch eine voraussichtliche Restzeit Rechnung rein. Aber wenn ich was ändern sollte dann lieber jetzt als später.
VB.NET-Quellcode
- Public Class frmUpload
- Private Class Upload_Args
- Public file_name As String
- Public file_path As String
- Public server_address As String
- Public user_name As String
- Public password As String
- Public Sub New(ByVal f_n As String, ByVal p_a As String, ByVal s_a As String, ByVal user As String, ByVal pass As String)
- file_name = f_n
- file_path = p_a
- server_address = s_a
- user_name = user
- password = pass
- End Sub
- End Class
- Dim t As Threading.Thread
- Dim password As String
- Dim user As String
- Dim server_address As String
- Private Delegate Sub Updating(ByVal rest_bytes As Integer, ByVal file_lenght As Integer, ByVal done As Boolean)
- Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
- Using ofd As New OpenFileDialog
- ofd.Multiselect = False
- If ofd.ShowDialog <> Windows.Forms.DialogResult.OK Then
- Return
- End If
- Dim ofd_path As String = ofd.FileName.Substring(0, ofd.FileName.LastIndexOf("\") + 1)
- Dim ofd_file As String = IO.Path.GetFileName(ofd.FileName)
- Dim args As New Upload_Args(ofd_file, ofd_path, server_address, user, password)
- Dim tS As New Threading.ParameterizedThreadStart(AddressOf Upload)
- Dim t As New Threading.Thread(tS)
- t.Start(args)
- End Using
- End Sub
- Private Sub Upload(ByVal arguments As Object)
- Dim args As Upload_Args = DirectCast(arguments, Upload_Args)
- Dim request As System.Net.FtpWebRequest = DirectCast(System.Net.WebRequest.Create(args.server_address & args.file_name), System.Net.FtpWebRequest)
- request.Credentials = New System.Net.NetworkCredential(args.user_name, args.password)
- request.Method = System.Net.WebRequestMethods.Ftp.UploadFile
- Dim strz As System.IO.Stream = request.GetRequestStream()
- Dim rest As Integer
- Dim full_lenght As Integer
- Using fileStream As New IO.FileStream(args.file_path & args.file_name, IO.FileMode.Open, IO.FileAccess.Read)
- rest = CInt(fileStream.Length)
- full_lenght = rest
- Dim buffer(31) As Byte
- Dim bytesRead As Integer = fileStream.Read(buffer, 0, buffer.Length)
- Do While (bytesRead > 0)
- strz.Write(buffer, 0, bytesRead)
- bytesRead = fileStream.Read(buffer, 0, buffer.Length)
- rest -= buffer.Length
- Me.Invoke(New Updating(AddressOf Upload_State), rest, full_lenght, False)
- Loop
- End Using
- strz.Close()
- strz.Dispose()
- Me.Invoke(New Updating(AddressOf Upload_State), rest, full_lenght, True)
- End Sub
- Private Sub Upload_State(ByVal rest_bytes As Integer, ByVal file_lenght As Integer, ByVal done As Boolean)
- If done Then
- If MessageBox.Show("Upload abgeschlossen", "Uploader", MessageBoxButtons.OK) = Windows.Forms.DialogResult.OK Then
- Application.Exit()
- End If
- Else
- Dim uploaded_percent As Double = ((rest_bytes / file_lenght * 100) - 100) * -1
- ProgressBar1.Value = CInt(uploaded_percent)
- End If
- End Sub
- End Class
mfG
Derfuhr