您好我刚刚使用powershell Webclient进行了测试。 Everthing似乎工作正常,但后来我必须上传名称中带有#的文件(测试。#00 )。 服务器上的文件只删除。#00。服务器上的文件名为" test" ,而不是" test。#00" 。 test.zip没有任何问题。
这是我在Powershell Windows 10上使用的脚本:
$webclient = New-Object System.Net.WebClient
$localPath = "c:\temp\";
$ftp = "ftp://192.168.0.202/"
$webclient.Credentials = New-Object System.Net.NetworkCredential("admin","admin")
$webclient.UploadFile($ftp + "test.zip",$localPath + "test.zip")
$webclient.UploadFile($ftp + "test.#00",$localPath + "test.#00")
答案 0 :(得分:3)
URL中的#,@,:特殊字符必须是十六进制编码。
其中23是'#'
的十六进制值(0x23)Character Hex Conversion
# %23
space %20
@ %40
答案 1 :(得分:1)
正如@kirill所提到的,你必须对文件名进行十六进制编码。您也可以使用[uri]::EscapeDataString("test.#00")
C:\> get-item .\test.#00
Directory: C:\
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 7/20/2017 7:23 AM 0 test.#00
C:\> $file = get-item .\test.#00
C:\> $encFileName = [uri]::EscapeDataString($file.Name)
C:\> $encFileName
test.%2300
C:\>