PDA

Просмотр полной версии : [Статья] [.NET] Работа с FTP.


OrBiT_DaRk
11.05.2013, 19:26
Здравствуйте, сейчас я покажу как работать с FTP.
Я покажу как:

Загружать файл
Скачивать файл
Удалять файл
Создавать папку
Удалять папку


Для начала создадим проект, добавим на форму 5 кнопок и 3 текстбокса.
[Ссылки могут видеть только зарегистрированные и активированные пользователи]

Перейдем к коду:

В самом верху кода пишем:
Imports System.Net
Imports System.Net.WebRequestMethods.Ftp
Imports System.Collections.Generic
Imports Utilities.FTP

Под:
Public Class Form1

Пишем:

Dim op As New OpenFileDialog
Dim str As String
Dim sv As New FolderBrowserDialog
Private Function FtpFolderDelete(ByVal folder_name As String, ByVal file_name As String, ByVal username As String, ByVal password As String) As Boolean
Try
Dim myFtpWebRequest As FtpWebRequest
Dim myFtpWebResponse As FtpWebResponse
myFtpWebRequest = WebRequest.Create("ftp://" & folder_name & "/" & file_name)
myFtpWebRequest.Credentials = New NetworkCredential(username, password)
myFtpWebRequest.Method = WebRequestMethods.Ftp.RemoveDirectory
myFtpWebResponse = myFtpWebRequest.GetResponse()
myFtpWebResponse.Close()
Return True
Catch ex As Exception
Return False
End Try

End Function
Private Function FtpFileDelete(ByVal folder_name As String, ByVal file_name As String, ByVal username As String, ByVal password As String) As Boolean
Try
Dim myFtpWebRequest As FtpWebRequest
Dim myFtpWebResponse As FtpWebResponse
myFtpWebRequest = WebRequest.Create("ftp://" & folder_name & "/" & file_name)
myFtpWebRequest.Credentials = New NetworkCredential(username, password)
myFtpWebRequest.Method = WebRequestMethods.Ftp.DeleteFile
myFtpWebResponse = myFtpWebRequest.GetResponse()
myFtpWebResponse.Close()
Return True
Catch ex As Exception
Return False
End Try

End Function
Private Function FtpFolderCreate(ByVal folder_name As String, ByVal username As String, ByVal password As String) As Boolean
Dim request As Net.FtpWebRequest = CType(FtpWebRequest.Create("ftp://" & folder_name & "/" & str), FtpWebRequest)
request.Credentials = New NetworkCredential(username, password)
request.Method = WebRequestMethods.Ftp.MakeDirectory

Try
Using response As FtpWebResponse = DirectCast(request.GetResponse(), FtpWebResponse)

End Using
Catch ex As WebException
Dim response As FtpWebResponse = DirectCast(ex.Response, FtpWebResponse)

If response.StatusCode = FtpStatusCode.ActionNotTakenFileUnavailable Then
Return False
End If
End Try
Return True
End Function
Private Function FtpFileUpload(ByVal folder_name As String, ByVal file_name As String, ByVal username As String, ByVal password As String) As Boolean
Try
Dim request As System.Net.FtpWebRequest = DirectCast(System.Net.WebRequest.Create("ftp://" & folder_name & "/" & op.SafeFileName), System.Net.FtpWebRequest)
request.Credentials = New System.Net.NetworkCredential(username, password)
request.Method = System.Net.WebRequestMethods.Ftp.UploadFile

Dim file() As Byte = System.IO.File.ReadAllBytes(file_name)

Dim strz As System.IO.Stream = request.GetRequestStream()
strz.Write(file, 0, file.Length)
strz.Close()
strz.Dispose()
Return True
Catch ex As Exception
Return False
End Try

End Function
Private Function FtpFileDownload(ByVal host As String, ByVal remoteFile As String, ByVal localFile As String, ByVal username As String, ByVal password2 As String) As Boolean
Try

localFile = localFile & "/" & remoteFile
Dim URI As String = "ftp://" & host & "/" & remoteFile
Dim ftp As System.Net.FtpWebRequest = CType(System.Net.FtpWebRequest.Create(URI), System.Net.FtpWebRequest)
ftp.Credentials = New System.Net.NetworkCredential(username, password2)
ftp.KeepAlive = False
ftp.UseBinary = True
ftp.Method = System.Net.WebRequestMethods.Ftp.DownloadFile

Using response As System.Net.FtpWebResponse = CType(ftp.GetResponse, System.Net.FtpWebResponse)
Using responseStream As IO.Stream = response.GetResponseStream

Using fs As New IO.FileStream(localFile, IO.FileMode.Create)
Dim buffer(2047) As Byte
Dim read As Integer = 0
Do
read = responseStream.Read(buffer, 0, buffer.Length)
fs.Write(buffer, 0, read)
Loop Until read = 0
responseStream.Close()
fs.Flush()
fs.Close()
End Using
responseStream.Close()
End Using
response.Close()
End Using
Return True
Catch ex As Exception
Return False
End Try

End Function

(Все функции собирал и писал сам.)

[Ссылки могут видеть только зарегистрированные и активированные пользователи]

Код первой кнопки:
op.ShowDialog()
If op.FileName = "" Then
Else
If FtpFileUpload(TextBox1.Text, op.FileName, TextBox3.Text, TextBox4.Text) = True Then
MsgBox("Удачно")
Else
MsgBox("Не удачно")
End If
End If

Код второй кнопки:
str = InputBox("Введите путь к файлу")
sv.ShowDialog()

If sv.SelectedPath = "" Then
Else

If FtpFileDownload(TextBox1.Text, str, sv.SelectedPath, TextBox3.Text, TextBox4.Text) = True Then
MsgBox("Удачно")
Else
MsgBox("Не удачно")
End If
End If

Код третьей кнопки:
str = InputBox("Введите название новой папки")
If FtpFolderCreate(TextBox1.Text, TextBox3.Text, TextBox4.Text) = True Then
MsgBox("Удачно")
Else
MsgBox("Не удачно")
End If

Код четвертой кнопки:
str = InputBox("Введите название файла")
If FtpFileDelete(TextBox1.Text, str, TextBox3.Text, TextBox4.Text) = True Then
MsgBox("Удачно")
Else
MsgBox("Не удачно")
End If

Код пятой кнопки:
str = InputBox("Введите название папки")
If FtpFolderDelete(TextBox1.Text, str, TextBox3.Text, TextBox4.Text) = True Then
MsgBox("Удачно")
Else
MsgBox("Не удачно")
End If

Готово, можно тестить. В первый текстбокс вписываем ип (пример: 123.123.232.123:1232), во второй логин, в третий пароль.
Если что-то не понятно, смотрим видео.

U4pV1iYnaRk

Исходники:
Download ([Ссылки могут видеть только зарегистрированные и активированные пользователи]) VT ([Ссылки могут видеть только зарегистрированные и активированные пользователи] 80bef570dbcfde/analysis/1368287257/)

Hygo!
04.06.2013, 16:40
Лучше использовать известные фтп клиенты, например totalcomander, и защищен и удобный интерфейс. А так, мало ли пароли не туда уйдут ;)

avi2011class
07.07.2013, 20:14
Лучше использовать известные фтп клиенты, например totalcomander, и защищен и удобный интерфейс. А так, мало ли пароли не туда уйдутДля обучения само то, а ТоталКоммандер не позволит автоматизировать. Например рассылку по ФТП ты с ним фиг сделаешь./dgs

_PONTIAK_
19.08.2013, 23:08
Привет я только начинаю изучать делфи и паскаль но всё-таки объясните что такое
FTP

Sinyss
19.08.2013, 23:21
Привет я только начинаю изучать делфи и паскаль но всё-таки объясните что такое
Ты не в том разделе тогда...
[Ссылки могут видеть только зарегистрированные и активированные пользователи]

OrBiT_DaRk
23.08.2013, 16:33
Спасибо,но беда в том что он не защищен
На хостинге, создаешь учетку для ФТП с доступом к определенной папке. Даже если узнают данные, кроме папки у них ничего не будет.