can';t通过FTP上载大于2 gb的文件-Powershell

can';t通过FTP上载大于2 gb的文件-Powershell,powershell,ftp,Powershell,Ftp,如何使用powershell将大于2 gb的文件上载到FTP服务器,我正在使用以下功能 # Create FTP Rquest Object $FTPRequest = [System.Net.FtpWebRequest]::Create("$RemoteFile") $FTPRequest = [System.Net.FtpWebRequest]$FTPRequest $FTPRequest.Method = [System.Net.WebRequestMethods+Ftp

如何使用powershell将大于2 gb的文件上载到FTP服务器,我正在使用以下功能

# Create FTP Rquest Object

$FTPRequest = [System.Net.FtpWebRequest]::Create("$RemoteFile")
    $FTPRequest = [System.Net.FtpWebRequest]$FTPRequest
    $FTPRequest.Method = [System.Net.WebRequestMethods+Ftp]::UploadFile
    $FTPRequest.Credentials = new-object System.Net.NetworkCredential($Username, $Password)
    $FTPRequest.UseBinary = $true
    $FTPRequest.Timeout = -1
    $FTPRequest.KeepAlive = $false
    $FTPRequest.ReadWriteTimeout = -1
    $FTPRequest.UsePassive = $true

    # Read the File for Upload

    $FileContent = [System.IO.File]::ReadAllBytes(“$LocalFile”)
    $FTPRequest.ContentLength = $FileContent.Length

# Get Stream Request by bytes

try{
    $Run = $FTPRequest.GetRequestStream()
    $Run.Write($FileContent, 0, $FileContent.Length)

# Cleanup

    $Run.Close()
    $Run.Dispose()    
} catch [System.Exception]{
    'Upload failed.'       
}
我在上传时遇到此错误

 Exception calling "ReadAllBytes" with "1" argument(s): "The file is too long. 
    This operation is currently limited to supporting files less than 2 gigabytes 
    in size."

    +     $FileContent = [System.IO.File]::ReadAllBytes(“$LocalFile”)
    +     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : IOException
我使用了其他功能,但结果是上传速度太慢,好像没有超过50KB/s 希望有一个解决方案,而不是将大文件分割成块

多亏了和

我找到了两个适合我的解决方案

解决方案1的作者:

解决方案2的作者:

    $FileStream = [System.IO.File]::OpenRead("$LocalFile")
    $FTPRequest.ContentLength = $FileStream.Length
    $Run = $FTPRequest.GetRequestStream()
    $FileStream.CopyTo($Run, 256mb)
    $Run.Close()
    $FileStream.Close()
感谢和

我找到了两个适合我的解决方案

解决方案1的作者:

解决方案2的作者:

    $FileStream = [System.IO.File]::OpenRead("$LocalFile")
    $FTPRequest.ContentLength = $FileStream.Length
    $Run = $FTPRequest.GetRequestStream()
    $FileStream.CopyTo($Run, 256mb)
    $Run.Close()
    $FileStream.Close()

我将立即检查它的可能副本..
$FileStream=[System.IO.File]::OpenRead($LocalFile”)$FTPRequest.ContentLength=$FileStream.Length$Run=$FTPRequest.GetRequestStream()$CopyTo($Run)$Run.Close()$FileStream.Close()$Run.Write($FileStream,0,$FileStream.Length)。我现在将检查它的可能副本。
$FileStream=[System.IO.File]::OpenRead($LocalFile”)$FTPRequest.ContentLength=$FileStream.Length$Run=$FTPRequest.GetRequestStream()$CopyTo($Run)$Run.Close()$FileStream.Close()$Run.Write($FileStream,0,$FileStream.Length)
。您可以增加流复制的缓冲区大小
$FileStream.CopyTo($Run,256mb)
。这应该会加快速度。您可以增加流复制的缓冲区大小
$FileStream.CopyTo($Run,256mb)
。这会让它跑得更快。