Rename file on FTP with PowerShell
Asked Answered
J

2

5

Is there a way to rename the file in a FTP directory? I'm streaming live images from computer to FTP, but problem is that when it uploads the image to FTP it making instant replacement of a file. I want to firstly upload image with temporary name and then make a rename to live.jpg. It's gonna be like cached file uploading.

while($true)
{
    $i++
    $File = "c:\live\temp.jpg"
    $ftp = "ftp://username:[email protected]/camera/temp.jpg"

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

    $webclient.UploadFile($uri, $File)
}

How can I use this in script properly ?

Rename-Item ..\camera\temp.jpg live.jpg

Thanx!

Jolda answered 22/8, 2012 at 10:7 Comment(0)
K
6

Try this:

$ftp = [System.Net.FtpWebRequest]::Create("ftp://username:[email protected]/camera/temp.jpg")
$ftp.KeepAlive = $true
$ftp.UsePassive = $true
$ftp.Method = "Rename"
$ftp.RenameTo = "camera/temp1.jpg"
$ftp.UseBinary = $true
$response = [System.Net.FtpWebResponse] $ftp.GetResponse()
Kuhns answered 22/8, 2012 at 14:46 Comment(1)
UsePassive and UseBinary properties have no effect on the Rename method and they are $true by default anyway. The KeepAlive is also $true by default. So all three can be removed without any effect on the code result.Moores
R
1
$ftp = [System.Net.FtpWebRequest]::Create("ftp://username:[email protected]/camera/temp.jpg")
$ftp.KeepAlive = $true
$ftp.UsePassive = $true
$ftp.Method = "Rename"
$ftp.RenameTo = "camera/temp1.jpg"
$ftp.UseBinary = $true
$response = [System.Net.FtpWebResponse] $ftp.GetResponse()

I had to adjust the $ftp.RenameTo line and remove the directory to make it work for me:

$ftp.RenameTo = "temp1.jpg"

Thanks anyway

Raceme answered 18/1, 2021 at 14:5 Comment(1)
I think that's expected because the current directory is set to /camera. See further explanation here ... under the 'Remarks' section: The URI may be relative or absolute. If the URI is of the form "ftp://contoso.com/path", first the .NET Framework logs into the FTP server, then the current directory is set to <UserLoginDirectory>/path.Pallaton

© 2022 - 2024 — McMap. All rights reserved.