問題タブ [ftpwebrequest]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - FtpWebRequestダウンロードファイル
次のコードは、FTP経由でファイルを取得することを目的としています。ただし、エラーが発生します。
エラーは次のとおりです。
リモートサーバーがエラーを返しました:(550)ファイルが利用できません(ファイルが見つからない、アクセスできないなど)
ファイルは確かにリモートマシンに存在し、このftpを手動で実行できます(つまり、アクセス許可があります)。なぜこのエラーが発生するのか誰か教えてもらえますか?
.net - .NETFtpWebRequestがDateTimeStampまたはFileSizeを返さない
FtpWebRequestを使用してFTPサーバーに接続しており、WebRequestMethods.Ftp.ListDirectoryDetailsを使用してディレクトリの詳細を適切に一覧表示できます。ただし、リモートサーバーからの応答には日、月、時刻がありますが、年はありません。
-rw-rw-rw-1ユーザーグループ9496月2日08:43Unsubscribes_20100602.zip
-rw-rw-rw-1ユーザーグループ17736月1日06:48export_142571709.txt
-rw-rw-rw-1ユーザーグループ17736月1日06:50export_142571722.txt
-rw-rw-rw-1ユーザーグループ980Jun1 06:51 export_142571734.txt
これは私が書いているアプリケーションに必要なので、WebRequestMethods.Ftp.GetDateTimestampを使用して各ファイルのdatetimestampを取得しようとしましたが、応答は常に空です。例外はスローされません。
なぜこれが起こるのか誰かが何か考えを持っていますか?
c# - 現在のユーザーディレクトリがrootと異なる場合、ftpメソッドでファイルの名前を変更できません
備考:スパム防止メカニズムのため、URIの先頭をftp://からftpに置き換えることを余儀なくされました。
次の問題があります。C#ftpメソッドでファイルをアップロードし、後で名前を変更する必要があります。簡単ですよね?:)
さて、私のftpホストは次のようになっているとしましょう:
ftp.contoso.com
ログイン後、現在のディレクトリは次のように設定されます。
ユーザー/名前
だから、私が達成しようとしているのは、ログインして、ファイルをfile.ext.tmpとして現在のディレクトリにアップロードし、アップロードが成功した後、ファイルの名前をfile.extに変更することです。
全体的な難しさは、私が推測するように、FtpWebRequestのリクエストURIを適切に設定することです。
MSDNの状態:
URIは相対的または絶対的です。URIの形式が「ftp://contoso.com/%2fpath」(%2fはエスケープされた「/」)の場合、URIは絶対であり、現在のディレクトリは/pathです。ただし、URIの形式が「ftp://contoso.com/path」の場合、最初に.NET FrameworkがFTPサーバーにログインし(Credentialsプロパティで設定されたユーザー名とパスワードを使用)、次に現在のディレクトリにログインします。 UserLoginDirectory/pathに設定されます。
では、次のURIでファイルをアップロードします。
ftp.contoso.com/file.ext.tmp
すばらしいです。ファイルは、ディレクトリ「users/name」内の目的の場所に配置されます。
ここで、ファイルの名前を変更したいので、次のURIを使用してWebリクエストを作成します。
ftp.contoso.com/file.ext.tmp
そして、パラメータの名前変更を次のように指定します。
file.ext
これにより、550エラーが発生します:ファイルが見つからない、権限がないなど。
これをMicrosoftNetworkMonitorで追跡したところ、次のようになりました。
コマンド:RNFR、
CommandParameterからの名前変更:/file.ext.tmp
Ftp:ポート53724への応答、「550ファイル/file.ext.tmpが見つかりません」
現在のディレクトリではなく、ルートディレクトリでファイルを探しているかのように。
Total Commanderを使用してファイルの名前を手動で変更しましたが、唯一の違いは、CommandParameterに最初のスラッシュがないことです。
CommandParameter:file.ext.tmp
次の絶対URIを指定することで、ファイルの名前を正常に変更できます。
ftp.contoso.com/%2fusers/%2fname/file.ext.tmp
しかし、現在のユーザーのディレクトリの名前を知らなければならないので、このアプローチは好きではありません。おそらくWebRequestMethods.Ftp.PrintWorkingDirectoryを使用して実行できますが、さらに複雑になります(このメソッドを呼び出してディレクトリ名を取得し、パスを組み合わせて適切なURIを形成します)。
私が理解していないのは、URI ftp.contoso.com/file.ext.tmpが名前の変更ではなく、アップロードに適している理由です。ここで何かが足りませんか?
プロジェクトは、VisualStudio2010でコーディングされた.NET4.0に設定されています。
編集
OK、コードスニペットを配置します。
ftpホスト、ユーザー名、パスワードを入力する必要があることに注意してください。このサンプルが機能する(つまり、エラーが発生する)には、ユーザーディレクトリがルートとは異なる必要があります(「pwd」-コマンドは「/」とは異なるものを返す必要があります)
c# - C# FtpWebRequest エラー 403
FTP経由でファイルを取得する次のコードがあります。
これはほとんどの場合に機能しますが、例外が発生するクライアント マシンが 1 つあります。
なぜこれが当てはまるのか、誰か教えてもらえますか?すべてのクライアントで実行されているのとまったく同じコードですか (同じユーザー名とパスワードを含む)?
c# - FtpWebRequest ダウンロード ファイルのサイズが正しくありません
次のコードを使用して、リモート ftp サーバーからファイルをダウンロードしています。
私がダウンロードしているファイルは dll であり、私の問題は、このプロセスによって何らかの方法で変更されていることです。ファイルサイズが増加しているため、これはわかっています。コードのこのセクションに問題があるのではないかと疑っています。
何が間違っている可能性があるかについて、誰かがアイデアを提供できますか?
.net - FtpWebRequest-サーバーが現在のディレクトリを/(ルート)以外にデフォルト設定した場合にファイルのアップロードを補正するにはどうすればよいですか?
一部のサーバーにFTP接続を行う場合、サーバーは現在のディレクトリをルート以外のディレクトリにデフォルト設定します。
例えば:
サーバーはデフォルトで接続を「/」ルートに設定する場合があります。他のサーバーはデフォルトで「/abc」になる場合があります。
ファイルftp://ftp.example.com/abc/mno/xyz/myfile.datをxyzディレクトリにアップロードする場合、現在のディレクトリが「/」以外の場合、FtpWebRequestは550を返します。つまり、FtpWebRequestはパス/abc/abc/mno/xyz/filename.datを作成していますが、これは有効なパスではないため、550です。
同じURIが両方のタイプのサーバーのデフォルト接続条件で機能するようにこれを補うことができる特別なURI構文はありますか?
または、よりスマートにするために設定できるFtpWebRequestのプロパティはありますか?
ftp - Filezillaを介して明示的にftpを実行できますが、コードからはできません
タイトルにあるように、FileZillaクライアントを介してサーバーから別のマシンに接続できますが、コード(.Net-FTPWebRequest)を介して接続することはできません。
別のマシンから動作するので、コードが優れていることはわかっています。私が問題を抱えている特定のマシンはNATの背後にありますが、SAは、通信しようとしているホストからのトラフィック用にすべてのポートを開いています。
何か提案があります-私は何か明らかなことを見逃しましたか?
試行された接続から得られる例外は次のとおりです。
「トランスポート接続からデータを読み取れません:接続されたパーティが一定期間後に適切に応答しなかったために接続の試行が失敗したか、接続されたホストが応答しなかったために接続の確立に失敗しました。」
そして、接続しようとしているマシンからのログは次のように表示されます。
7/26/2010 12:40:23 PM-(ログインしていません)(xx.xx.xxx.xxx)>接続し、ウェルカムメッセージを送信しています...
7/26/2010 12:40:23 PM-(ログインしていない)(xx.xx.xxx.xxx)>220-FileZillaServerバージョン0.9.32ベータ
7/26/2010 12:40:23 PM-(ログインしていない)(xx.xx.xxx.xxx)> 220 ftp.xxxxxxxxxx.com
7/26/2010 12:40:23 PM-(ログインしていない)(xx.xx.xxx.xxx)> AUTH TLS
7/26/2010 12:40:24 PM-(ログインしていない)(xx.xx.xxx.xxx)>234認証タイプTLSの使用
7/26/2010 12:41:24 PM-(ログインしていません)(xx.xx.xxx.xxx)>421ログイン時間を超えました。制御接続を閉じます。
7/26/2010 12:41:24 PM-(ログインしていません)(xx.xx.xxx.xxx)>切断されました。
.net - NATの背後にあるFTPWebRequest(PASV、SSL)
誰かが.NetFTPWebRequestクラスを使用して、NATの背後からリモートサーバーにftpを送信したことがありますか?私のコードは次のとおりです。
そして、次の例外が発生します。
「トランスポート接続からデータを読み取れません:接続されたパーティが一定期間後に適切に応答しなかったために接続の試行が失敗したか、接続されたホストが応答しなかったために接続の確立に失敗しました。」
マシンがNATの背後にない場合でも機能するので、コードが優れていることはわかっています。何か案は?マシンには静的IPがあり、指定されたホストとの間のトラフィックに対してすべてのポートが開いています。
c# - FtpWebrequest - ファイル名に ä、ö のようなドイツ語の「ウムラウテ」が含まれています
FtpWebrequest ごとに FTP 経由でファイルを取得しようとしています。ファイル名に ä、ö、ü などのドイツ語のウムラウテが含まれていると、ダウンロードに失敗します。
コード:
ファイル名を「ae.xlsを含むファイル名」に変更すると動作します。
例外は次のとおりです: WebException: リモート サーバーがエラーを返しました: (550) ファイルを利用できません (たとえば、ファイルが見つからない、アクセスできません)。
ftp 経由のディレクトリ リストはうまく機能し、ファイル名が表示されます。
出力は「ä.xls を含むファイル名」です。
誰かがその問題に対処するためのヒントを持っていますか - 私はそのファイルの命名に影響を与えません...
事前にどうもありがとう トビ
c# - C# を使用して FTP で複数のアップロード/ダウンロードを行う方法
FtpWebRequest を使用せずに C# を使用して FTP で複数のアップロード/ダウンロードを行う方法は?
スレッドを使用して実現できると思いますが、開始できません。
スレッドを使用して FTP で複数のアップロード/ダウンロードを行うための参照用のコード スニペットがボディにある場合、それは役に立ちます。