実際にHTTPプロキシまたはFTPゲートウェイの背後で動作することができる、.NETで使用するうまくいけば無料のFTPクラスを知っていますか? .NETのFtpWebRequestは恐ろしいことですが、私はここで自分自身をロールしたくありません。.NET用のFTPクライアントクラス
答えて
System.Net.WebClientはftpのURLを扱うことができますし、使用するのが簡単です。これで資格情報とプロキシ情報を設定することもできます。
男は明らかにそれはオプションではないと言った – DevelopingChris
いいえ、彼はFTPWebRequestはオプションではないと述べた。 System.Net.WebClientは完全に別のクラスです。 –
彼はいくつかの答えの後で彼の質問を変更しました... –
私は特別な経験はありませんが、sharptoolboxオファーplenty implementationsです。
"Indy.Sockets"を試すことができます。これはftpを含む多くの高水準ネットワークプロトコルを扱うことができます。
私はそれを使用しますが、一時ファイルを残すようないくつかの欠点があります。 –
は、私は全体の実行した最適なものがあるedtFTP.net http://www.enterprisedt.com/products/edtftpnet/overview.html
申し出の柔軟性は、あなたが、私は今かなり長い間http://sourceforge.net/projects/dotnetftpclient/を使用している
組み込みクラスに取得しない場合、およびそれはうまく仕事をします。 PASV接続を使用する場合は、ファイアウォールの問題は発生しません。 FTPゲートウェイが何であるかはわかりませんが、HTTPプロキシがFTP接続にどのように影響するかはわかりません。
dotnetftpclientはHTTPプロキシをサポートしていません。 –
私たちのRebex FTPはプロキシでうまく動作します。次のコードは、HTTPプロキシを使用してFTPに接続する方法を示しています(コードはFTP tutorial pageから取得しています)。
// initialize FTP client
Ftp client = new Ftp();
// setup proxy details
client.Proxy.ProxyType = FtpProxyType.HttpConnect;
client.Proxy.Host = proxyHostname;
client.Proxy.Port = proxyPort;
// add proxy username and password when needed
client.Proxy.UserName = proxyUsername;
client.Proxy.Password = proxyPassword;
// connect, login
client.Connect(hostname, port);
client.Login(username, password);
// do some work
// ...
// disconnect
client.Disconnect();
あなたは、私は最近、私のプロジェクトでこれを使用し、それは素晴らしい仕事をwww.rebex.net/ftp.net/download.aspx
+1のコードサンプル –
で試用版をダウンロードすることができます。
の.Net 4.0以降は現在のFTPクライアントは、より多くの情報のため、このMSDNのリンクを参照してくださいクラス - 含まれています。
http://msdn.microsoft.com/en-us/library/system.net.ftpwebrequest.aspx
私もPASVモードなどを使用するためのオプションを参照してください、完全に機能するように見える(またはので、私は願っています)。
このクラスは、OPが元々(恐らくは)「恐ろしい」と記述したクラスです。このクラスは新しいものではありません(.NET 2.0以降で使用されています)。有用な方法でプロキシをサポートしていません。 –
OPが私たちの質問を変更し、私の答えを時代遅れにしました。 –
downvoteを削除しました –
私はsimalorの問題を抱えていましたが、Socks4プロキシ経由でFTPS(明示的)通信用のクライアントを作成しました。
検索とテストの後、.NETライブラリStarksoftftpsが見つかりました。ここで http://starksoftftps.codeplex.com/
私のサンプルコードです:ここで
Socks4ProxyClient socks = new Socks4ProxyClient("socksproxyhost",1010);
FtpClient ftp = new FtpClient("ftpshost",2010,FtpSecurityProtocol.Tls1Explicit);
ftp.Proxy = socks;
ftp.Open("userid", "******");
ftp.PutFile(@"C:\519ec30a-ae15-4bd5-8bcd-94ef3ca49165.xml");
Console.WriteLine(ftp.GetDirListAsText());
ftp.Close();
は、アップロードがHTTPプロキシを経由してFTPにファイルを私のオープンソースのC#コードです。
public bool UploadFile(string localFilePath, string remoteDirectory)
{
var fileName = Path.GetFileName(localFilePath);
string content;
using (var reader = new StreamReader(localFilePath))
content = reader.ReadToEnd();
var proxyAuthB64Str = Convert.ToBase64String(Encoding.ASCII.GetBytes(_proxyUserName + ":" + _proxyPassword));
var sendStr = "PUT ftp://" + _ftpLogin + ":" + _ftpPassword
+ "@" + _ftpHost + remoteDirectory + fileName + " HTTP/1.1\n"
+ "Host: " + _ftpHost + "\n"
+ "User-Agent: Mozilla/4.0 (compatible; Eradicator; dotNetClient)\n" + "Proxy-Authorization: Basic " + proxyAuthB64Str + "\n"
+ "Content-Type: application/octet-stream\n"
+ "Content-Length: " + content.Length + "\n"
+ "Connection: close\n\n" + content;
var sendBytes = Encoding.ASCII.GetBytes(sendStr);
using (var proxySocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp))
{
proxySocket.Connect(_proxyHost, _proxyPort);
if (!proxySocket.Connected)
throw new SocketException();
proxySocket.Send(sendBytes);
const int recvSize = 65536;
var recvBytes = new byte[recvSize];
proxySocket.Receive(recvBytes, recvSize, SocketFlags.Partial);
var responseFirstLine = new string(Encoding.ASCII.GetChars(recvBytes)).Split("\n".ToCharArray()).Take(1).ElementAt(0);
var httpResponseCode = Regex.Replace(responseFirstLine, @"HTTP/1\.\d (\d+) (\w+)", "$1");
var httpResponseDescription = Regex.Replace(responseFirstLine, @"HTTP/1\.\d (\d+) (\w+)", "$2");
return httpResponseCode.StartsWith("2");
}
return false;
}
BuiltinフレームワークFtpWebRequestは、HTTPプロキシを使用してディレクトリを一覧表示し、ファイルをダウンロードできますが、アップロードすることはできません。 –
var request =(FtpWebRequest)WebRequest.Create(uri); \t \t \t request.Credentials = FtpCredentials; \t \t \t request.Proxy =新しいWebProxy(_proxyHost、_proxyPort){Credentials = new NetworkCredential(_proxyUserName、_proxyPassword)}; \t \t \t request.UsePassive = true; \t \t \t \t \t \t使用(VARのRESP = request.GetResponse()) \t \t \t使用(VARストリーム= resp.GetResponseStream()) ....... –
- 1. .Net FTPライブラリ
- 2. Ruby Net :: FTPプログレスバー
- 3. Ruby Net :: FTPタイムアウトスレッド
- 4. Net :: FTP :: dir_hashref()のバグ?
- 5. Palindromeサービスクラスとクライアントクラス
- 6. FTP Mock for .NETフレームワーク
- 7. Perl Net :: FTPのエラー理由
- 8. Ruby 1.9 + Net :: FTP => Encoding :: UndefinedConversionError
- 9. C#用のFTP over FTP
- 10. .NETオープンソースFTP SDK/APIのご提案
- 11. Apacheのcommons-netでFTPプロキシを使用する
- 12. エラーが発生した後にWCFのクライアントクラスを再利用
- 13. .NETを使用した選択的FTPダウンロード
- 14. perlでファイルをアップロード中Net :: FTP module
- 15. OSS .Net FTP(クライアント)とTLSとSSL?
- 16. .net 2.0でFTPサーバーに接続
- 17. FTP用FileSystemWatcher
- 18. アンドロイド用FTPクライアント?
- 19. RubyスクリプトでNet :: FTPを使用して、リモートFTPサーバー上のファイルを同じFTPサーバー上のディレクトリに移動する方法
- 20. FTP .NETを使用して切断せずに複数のファイルをアップロード
- 21. FTPプロトコル、jakarta commons net、ファイル名のエンコードの問題
- 22. RailsでのNet :: FTPによるローカルファイルサイズとリモートファイルサイズの比較
- 23. Node.js用のアクティブなFTPクライアント
- 24. Webサイト用のpowershell ftpスクリプト
- 25. .NETアプリケーションのFTPプロトコルからディレクトリファイルサイズを取得する方法
- 26. Ftpは.NET 4.0でのみWebExceptionをスローします
- 27. Java、Apache Common Netを使用してメインフレームにファイルをFTPで送信
- 28. C#.Netを使用してftpからリモートデスクトップにファイルをコピーする
- 29. FTP経由のFTPプロキシ
- 30. Ftp asp.netでfilezillaを使用
私はFTPWebrequestで何が問題なのですか?バグ?またはおそらくそれはフードの下でIEを使用します(それは私が仮定していると仮定します) –
FtpWebRequestには非常に間違っています。プロキシのサポートは、最初は貧弱です。 –