【问题标题】:Error uploading file to FTP Server上传文件到 FTP 服务器时出错
【发布时间】:2015-10-07 08:59:53
【问题描述】:

我正在尝试使用 FTP 将文件上传到 FTP 服务器。我在网上找到了以下脚本,但无法运行。

$UserName = 'username'

$Password = 'password'

$LocalFilePath = 'c:\FolderName\x.txt'

$RemoteFileName = 'x.txt'

$ServerName = 'my.ftpserver.co.uk'


$webclient = New-Object System.Net.WebClient

$webclient.Credentials = New-Object System.Net.NetworkCredential($UserName, $Password)

#Connect to FTP
$uri = New-Object System.Uri(“ftp://$ServerName/$RemoteFileName”)
write-host $uri

#upload as file
$webclient.UploadFile($uri, $LocalFilePath)

但是当我运行它时,我得到以下错误:

    Exception calling "UploadFile" with "2" argument(s): "An exception occurred during a WebClient request."
    At line:21 char:22
+ $webclient.UploadFile <<<< ($uri, $LocalFilePath)
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : DotNetMethodException

谁能指出我正确的方向? 我可以在我的电脑上使用 Filezilla 等进行连接,所以它不会被防火墙或任何东西阻止,

【问题讨论】:

  • 测试了您的脚本,它运行良好...您使用的是代理还是类似的东西?
  • 据我所知,我已经尝试使用各种 FTP 客户端(Filezilla、WinSCP 等)进行连接,并且工作正常。我假设 Powershell 会像他们一样实现一个 FTP 连接,所以如果他们工作,powershell 也应该(或者我错了吗?)
  • 启用.NET network logging 并向我们展示日志。也向我们展示来自 FTP 客户端的日志(例如 WinSCP)以进行比较。
  • 从今天开始出现同样的错误,无法再上传文件了。

标签: powershell ftp powershell-2.0


【解决方案1】:

测试了您的脚本并且它运行良好,我能够重现您的错误的唯一方法是如果我将 $LocalFilePath 指向一个不存在的文件。你可以试试:

Test-Path($LocalFilePath)

然后看看它是否返回 True?

【讨论】:

  • 返回 TRUE。我看到已经修复了它,通过将 New-Object System.Uri(“ftp://$ServerName/$RemoteFileName”) 更改为 New-Object System.Uri($ftp+$File_Name)
【解决方案2】:

从您的评论和我在问题中看到的代码来看,问题可能只是因为您在其中有智能引号。它将是您的编码编辑器的产品,或者是将该代码复制并粘贴到您的环境中的来源。你需要注意这些事情。假设路径正确形成也许这只是你的问题。

智能行情

$uri = New-Object System.Uri(“ftp://$ServerName/$RemoteFileName”)

正确的双引号

$uri = New-Object System.Uri("ftp://$ServerName/$RemoteFileName")

第二个例子中的引号是你应该使用的。

【讨论】: