代码之家  ›  专栏  ›  技术社区  ›  thursdaysgeek

ftp删除命令中不允许使用哪些字符?

  •  1
  • thursdaysgeek  · 技术社区  · 16 年前

    我正在从外部服务器上ftp文件,然后在外部服务器上删除它们,其中一个文件失败,因为文件名中有空格。我更改了ftp删除命令,在文件名周围加上引号。

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

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

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

    2 回复  |  直到 16 年前
        1
  •  2
  •   Soviut    16 年前

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

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

        2
  •  0
  •   JaredPar    16 年前

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

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