4


4

C#でftpを使用してファイルを送信する

FTPを使用してファイルを送信しようとしています。 次のようなコードがあります。

string server = "x.x.x.x";  // Just the IP Address

FileStream stream = File.OpenRead(filename);
byte[] buffer = new byte[stream.Length];

WebRequest request = WebRequest.Create("ftp://" + server);
request.Method = WebRequestMethods.Ftp.UploadFile;
request.Credentials = new NetworkCredential(username, password);

Stream reqStream = request.GetRequestStream(); // This line fails
reqStream.Write(buffer, 0, buffer.Length);
reqStream.Close();

しかし、それを実行すると、次のエラーが表示されます。

要求されたURIは、このFTPコマンドに対して無効です。

誰でもその理由を教えてもらえますか? これを間違って使用していますか?

2 Answer


8


アップロードするパスとファイル名も指定する必要があると思うので、次のいずれかになるはずです。

WebRequest request = WebRequest.Create("ftp://" + server + "/");

WebRequest request = WebRequest.Create("ftp://" + server + "/filename.ext");


0


ftpメソッドを使用しなければならなかったとき、リクエストオブジェクトにいくつかのフラグを設定する必要がありました。

FtpWebRequest request = (FtpWebRequest)WebRequest.Create(ftpPath);
request.KeepAlive = true/false;
request.UsePassive = true/false;
request.UseBinary = xxx;

これらのフラグはサーバーに依存します。サーバーにアクセスできない場合、ここで何を使用すればよいかわかりませんが、構成で何が機能するかをテストして確認できます。

また、アップロードされたファイルを保存する場所をサーバーが認識できるように、ファイル名はおそらくURIの末尾にありません。