Resume FTP file copy


I have been having problems downloading a file from a FTP site - it keeps on timing out. I am currently trying the following code:

        $downloadRequest = [Net.WebRequest]::Create($fileUrl)
        $downloadRequest.Method = [System.Net.WebRequestMethods+FTP]::DownloadFile
        $downloadRequest.Credentials = $credentials
        $downloadResponse = $downloadRequest.GetResponse()
        $sourceStream = $downloadResponse.GetResponseStream()
        $targetStream = [System.IO.File]::Create($localFilePath)
        $buffer = New-Object byte[] 10240
        while (($read = $sourceStream.Read($buffer, 0, $buffer.Length)) -gt 0)
            $targetStream.Write($buffer, 0, $read);


I have changed both Timeout and ReadWriteTimeout values but this made no difference. Possibly a setting on the source server?

Anyway - is there a way to resume the download once it has timed out?


Not using that class, no. I’d --strongly-- suggest you look at BITS, the Background Intelligent Transfer Service, and its associated PowerShell cmdlets. It’s designed for this specific purpose.

Thanks - will look at this.