Vb.net 为什么';t FTP请求允许%20“吗;?

Vb.net 为什么';t FTP请求允许%20“吗;?,vb.net,ftpwebrequest,Vb.net,Ftpwebrequest,我正在发出FTP请求,每当参数remoteFilePath包含带有“%20”的字符串时,我都会收到一个错误,即找不到该文件。我怎样才能避开这件事 Dim remoteFileWriteTime As Date = Ftp.GetDateTimeStamp(remoteFilePath).ToLocalTime() 注意:我不负责命名文件,因为它不是我的服务器。请尝试使用以下代码对文件名进行编码: Dim baseUri as String = "ftp://SomeFtpServer/" Di

我正在发出FTP请求,每当参数
remoteFilePath
包含带有“%20”的字符串时,我都会收到一个错误,即找不到该文件。我怎样才能避开这件事

Dim remoteFileWriteTime As Date = Ftp.GetDateTimeStamp(remoteFilePath).ToLocalTime()

注意:我不负责命名文件,因为它不是我的服务器。

请尝试使用以下代码对文件名进行编码:

Dim baseUri as String = "ftp://SomeFtpServer/"
Dim file as String = "Strangely%20Named%20File.pdf"
Dim myUri as String = baseUri & HttpUtility.UrlEncode(file)
Dim remoteFileWriteTime As Date = Ftp.GetDateTimeStamp(myUri).ToLocalTime()

如果HttpUtility编码不正确,可能需要使用
Uri.EscapeDataString
进行编码。我不确定FTP希望立即使用哪种编码方案。

文件名是否实际包含
%
%20
可能被解释为一个空格-听起来您在某个地方遇到了编码问题。文件名实际上包含“%”为什么?它是文件名中完全有效的字符。只要您正确理解转义字符的问题,就没有问题。在其他情况下,许多其他角色也是如此。正确地转义字符串应该在任何优秀的开发人员的职权范围内。@Fred我同意,但不幸的是我不是创建文件的人。我承认,我不知道如何处理这个问题。这就是我问这个问题的原因。如果无法重命名文件,如何解决此问题?