2012-02-19 20 views
3

私はFTPプロキシ経由でFTPを使ってファイルをダウンロードしようとしています。 これは私がC#で実装しようとしているスクリプトです:FTP経由のFTPプロキシ

On Commandline: 
ftp -i -s:get.ini CORPORATE_PROXY.com 
-----------get.ini------------ 
[email protected]_FTP.com abc/user_name 
CORPORATE_PROXY_PASSWORD 
user_name_password 
cd pub/linux/knoppix 
get packages.txt 
bye 
-----------get.ini------------ 

abc/user_nameは私企業のプロキシを介してFTPへのアクセス権が付与した私のユーザー名です。

私は上記のスクリプトをC#で実装したいのですが、インターネット上で見つかった多くの種類のコードを再生した後、私はそれを行うことができません。

FtpWebRequest request = FtpWebRequest.Create(new Uri(@"ftp://" + CORPORATE_PROXY.com + @"/" + Path.GetFileName(fileToUpload))) as FtpWebRequest; 
request.UseBinary = true; 
request.KeepAlive = false; 
request.Method = WebRequestMethods.Ftp.UploadFile; 
if (!string.IsNullOrEmpty(CORPORATE_PROXY_USER) && !string.IsNullOrEmpty(CORPORATE_PROXY_PASSWORD)) 
    request.Credentials = new NetworkCredential(CORPORATE_PROXY_USER, CORPORATE_PROXY_PASSWORD); 

//Get physical file 
FileInfo fi = new FileInfo(fileToUpload); 
Byte[] contents = new Byte[fi.Length]; 

//Read file 
FileStream fs = fi.OpenRead(); 
fs.Read(contents, 0, Convert.ToInt32(fi.Length)); 
fs.Close(); 

request.Proxy = new WebProxy("CLIENT_FTP.com"); 
request.Proxy.Credentials = new NetworkCredential(abc/user_name, user_name_password); 

//Write file contents to FTP server 
Stream rs = request.GetRequestStream(); 
rs.Write(contents, 0, Convert.ToInt32(fi.Length)); 
rs.Close(); 

FtpWebResponse response = request.GetResponse() as FtpWebResponse; 
string statusDescription = response.StatusDescription; 
response.Close(); 
return statusDescription; 

主な問題は、私は、私がFTPProxy使用する必要がある疑いがある一方で、プロキシのため、私は、WebProxyにを使用していますということです - 私はanythereを見つけることができませんか?どんなアイデアが私が行くべきか、あるいは多分WebProxyはいいですか?

+0

FTPプロキシをサポートするカスタムFTPクライアントコンポーネントがあなたの友人になります。 –

答えて

0

これまで私はIndy Projectを使用してFTPプロキシを取得しています。

0

コード例でFtpWebRequestの代わりにWebRequestを使用してみてください。

これにより、クライアントからプロキシへの接続はHTTPになりますが、プロキシから宛先サーバーへの接続はFTPになります。プロキシはプロトコルの変換を処理しますが、この手法はFTP over HTTPと呼ばれます。

クライアントからプロキシ、およびプロキシからサーバーへの接続がFTPであるネイティブFTPプロキシを使用することもできます。プロキシがこれをサポートしていることを確認してください。

プロキシは、ネイティブFTPプロキシ接続を提供するために別のプロキシポートを提供します。

関連する問題