powershell webclient uploadfile # in 文件名
powershell webclient uploadfile # in filename
您好,我刚刚使用 powershell Webclient 进行了测试。
一切似乎都工作正常,但后来我不得不上传一个名称中带有 # 的文件 (test.#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")
URL 中的 #、@、: 等特殊字符必须采用十六进制编码。
其中 23 是“#”的十六进制值 (0x23)
Character Hex Conversion
# %23
space %20
@ %40
如@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:\>
您好,我刚刚使用 powershell Webclient 进行了测试。 一切似乎都工作正常,但后来我不得不上传一个名称中带有 # 的文件 (test.#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")
URL 中的 #、@、: 等特殊字符必须采用十六进制编码。
其中 23 是“#”的十六进制值 (0x23)
Character Hex Conversion
# %23
space %20
@ %40
如@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:\>