質問

外部サーバーからファイルをftpで送信し、外部サーバーでそれらを削除しました。ファイル名にスペースが含まれていたため、1つのファイルが失敗しました。 ftp deleteコマンドを変更して、ファイル名を引用符で囲みました。

ftpStream.WriteLine("delete """ & FileToDelete & """")

しかし、ユーザーがファイル名の作成に使用する可能性のある他の文字はありますか?これらのファイル名を制御することはできません。

(SSISとSQL Serverのタグを付けました。SSISパッケージからftpタスクをオンザフライで作成しているためです。両側のOSはWin XPです)

役に立ちましたか?

解決

ファイルシステムによって予約されている文字は許可されません。これには通常、スペース、コンマ、スラッシュ、コロン、クォーテーションマーク、二重引用符などが含まれます。しかし、JaredParが述べたように、各ファイルシステムには常に重複しない独自の予約文字セットがあるため、スペースはおそらく唯一の普遍的な攻撃者です。

ftpまたはhttpパスをURLエンコードすることをお勧めします。これにより、スペースが%20に変換されます。これは通常、ftpサーバーが理解する必要があります。

他のヒント

FTP RFC (RFC 959)のセクション5.3を参照してください。実際には、ファイル名の一部として違法なCrLf以外の違法な文字はありません。

問題は、宛先サーバーが窒息する文字と不正なFTP文字を知ることです。スペースのほかに、問題を引き起こす文字が多すぎないことを推測しています。しかし、私はFTPの専門家ではありません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top