【问题标题】:What characters are disallowed in an ftp Delete command?ftp Delete 命令中不允许使用哪些字符?
【发布时间】:2008-12-31 22:34:08
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: sql-server ssis ftp


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-05-05
        • 2010-12-30
        • 2011-10-30
        • 1970-01-01
        • 1970-01-01
        • 2018-02-07
        相关资源
        最近更新 更多