
28.03.2010, 03:30
|
|
Познавший АНТИЧАТ
Регистрация: 12.07.2008
Сообщений: 1,705
С нами:
9384806
Репутация:
1350
|
|
Была затронута тема отправка файла на FTP.Существует большое колличество способов и пару простых способов продемонстрирую.
1)Использование стандартного клиента ftp.exe.
2)Использование класса FtpWebRequest Class
$inputfile = "F:\1.txt"
$ftphost = "127.0.0.1"
$ftpfilepath = "/1.txt"
$ftpfullpath = "ftp://" + $ftphost + $ftpfilepath
$username="ftp"
$password="ftp"
$ftp = [System.Net.FtpWebRequest]::create($ftpfullpath)
$ftp.Credentials = New-Object System.Net.NetworkCredential($username,$password)
$ftp.Method = [System.Net.WebRequestMethods+Ftp]::UploadFile
$ftp.UseBinary = $true
$ftp.KeepAlive = $true
$fs = [System.IO.File]::OpenRead($inputfile)
[Void][Byte[]]$buffer = New-Object byte[] ($fs.length)
$fs.Read($buffer, 0, $buffer.Length)
$fs.Close()
$ftpstream = $ftp.GetRequestStream()
$ftpstream.Write($buffer, 0, $buffer.Length)
$ftpstream.Close()
Поддержка Proxy :
If the specified proxy is an HTTP proxy, only the DownloadFile, ListDirectory, and ListDirectoryDetails commands are supported.
3)Использование библиотеки BytesRoad.NetSuit ,возможна работа с Proxy (Socks4,5,HTTP)
Загрузить библиотеку можно по адресу - http://coad.net/blog/resources/BytesRoad.NetSuit_2_0.zip
[Void][System.Reflection.Assembly]::LoadFrom("F:\BytesRoad.Net.Ftp.dll")
[Void][System.Reflection.Assembly]::LoadFrom("F:\BytesRoad.Net.Sockets.dll")
[Void][System.Reflection.Assembly]::LoadFrom("F:\BytesRoad.Diag.dll")
Function UploadToFTP ()
{
param (
#Настройки подключения
#Удаленный сервер
$FtpServer = "127.0.0.1",
#Имя пользователя для ftp
$Username = "ftp",
#Пароль пользователя для ftp
$Password = "ftp",
#Папка на удаленном сервер
$RemotePath = "/",
#10 секунд
$Timeout = 10000,
#Файл для отправки
$LocalFile = "F:\1.txt",
#Настройки прокси
#Удаленный сервер
$pserver = "127.0.0.1",
#Порт
$pport = 3128,
#Имя пользователя для proxy
$puser = "test",
#Пароль пользователя для proxy
$ppasword = "test",
#Работаем с прокси или нет.
[switch]$IsProxy
)
$client = New-Object BytesRoad.Net.Ftp.FtpClient
$client.PassiveMode = $true
if ($IsProxy)
{
$proxy = New-Object BytesRoad.Net.Ftp.FtpProxyInfo
$proxy.Server = $pserver
$proxy.Port = $pport
$proxy.Type = [BytesRoad.Net.Ftp.FtpProxyType]::Socks5
$proxy.User = $puser
$proxy.Password = $ppasword
$client.ProxyInfo = $proxy
}
$client.Connect($Timeout, $FtpServer, 21)
$client.Login($Timeout, $Username, $Password)
$target = [System.IO.Path]::Combine($RemotePath,[System.IO.Path]::GetFileName($LocalFile)).Replace("\\", "/")
$client.PutFile($Timeout, $target, $LocalFile)
$client.Disconnect($Timeout)
}
#Запустит выполнение функции с определенными выше параметрами.
UploadToFTP
<#
UploadToFTP -IsProxy (если трубется поддержка прокси,параметры указать в функции)
Переопределить параметры ,которые указанны в функции
UploadToFTP -FtpServe "myserver.ru" -Username "Test" -Password "Test" -RemotePath "\\folderonserver/" -Timeout -IsProxy
#>
Последний раз редактировалось SpangeBoB; 28.03.2010 в 03:37..
|
|
|