5

我正在尝试在 Powershell 中使用 FTP 上传文件。我FtpWebRequest稍后使用GetRequestStream,但此方法返回错误:

“使用 HTTP 代理时不支持请求的 FTP 命令。”

我确实支持代理并且必须这样做。

在代理后面如何通过 Powershell 上传?

这将仅从.ps1Powershell 脚本运行。

我也试过:

$webclient = New-Object System.Net.WebClient
$uri = New-Object System.Uri($server)

$webclient.UploadFile($uri, "C:\Test\1234567.txt")

哪里$server和那个文件是有效的。但是该代码返回此错误:

"An exception occurred during a WebClient request."
At C:\Test\script.ps1:101 char:26
+     $webclient.UploadFile <<<< ($uri, "C:\Test\1234567.txt")
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : DotNetMethodException

我还在文件路径中尝试了双反斜杠,但没有帮助。

我所在的代理只涉及 HTTP,而不涉及 FTP。

4

2 回答 2

4

您确定您的代理支持 FTP,还是仅支持 HTTP?看到这个线程:

使用 HTTP 代理上传 FTP 文件

对于 WebClient,我过去曾使用过它,尽管它是用于 HTTP 的,但您可以尝试一下:

$wc = New-Object System.Net.WebClient
$wc.Headers.Add("User-Agent","Mozilla/4.0+")        
$wc.Proxy = [System.Net.WebRequest]::DefaultWebProxy
$wc.Proxy.Credentials = [System.Net.CredentialCache]::DefaultNetworkCredentials
$wc.UploadFile($uri, "C:\Test\1234567.txt")

注意 - “UploadFile 方法将本地文件发送到资源。此方法使用 STOR 命令上传 FTP 资源。对于 HTTP 资源,使用 POST 方法。”

于 2012-04-11T03:02:42.083 回答
0

我有一个例外:

使用“2”参数调用“UploadFile”的异常:“WebClient 请求期间发生异常。”

跟踪显示,当我使用 ftp-uri 并向 web 客户端添加代理时,没有启动任何连接。(既不是服务器也不是代理)

我支持一个带有身份验证的 ftp 代理,它对我有用的唯一方法是:

$LocalFile = "C:\Temp\test.csv"
$FtpFile = "ftp://$ProxyUser:$ProxyPassword@$ProxyServer:21/ftp_test.csv"

$uri = New-Object System.Uri($FtpFile)
$webclient = New-Object System.Net.WebClient
$webclient.Credentials = New-Object System.Net.NetworkCredential("$FtpUser@$FtpServer","$FtpPassword")
$webclient.UploadFile($uri, $LocalFile)
于 2019-04-12T08:54:14.890 回答