1

我正在从外部服务器对文件进行 ftp 处理,然后在外部服务器上删除它们,并且一个文件失败,因为文件名中有空格。我将我的 ftp 删除命令更改为在文件名周围加上引号。

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

但是,用户在创建文件名时可能会使用其他字符,我的程序仍然会阻塞吗?我无法控制这些文件名可能是什么。

(我放了一个 SSIS 和 SQL Server 的标签,因为我正在从 SSIS 包动态创建 ftp 任务。双方的操作系统都是 Win XP)

4

2 回答 2

2

不允许文件系统保留的任何字符。这通常包括空格、逗号、斜杠、冒号、问号、双引号等。但正如 JaredPar 所提到的,空格可能是唯一的普遍违规者,因为每个文件系统都有自己的一组保留字符,这些字符并不总是重叠。

对任何 ftp 或 http 路径进行 url 编码是个好主意。这会将空格转换为 %20,这通常应该被 ftp 服务器理解。

于 2008-12-31T22:44:37.360 回答
0

请参阅 FTP RFC (RFC 959)的第 5.3 节。除了 CrLf 之外,实际上没有任何非法字符作为文件名的一部分是非法的。

问题是知道目标服务器会阻塞哪些字符与非法 FTP 字符。我猜除了空格之外,不会有太多字符会导致问题。但我不是 FTP 专家。

于 2008-12-31T22:43:04.773 回答