views:

2280

answers:

2

Hi, I'm trying to upload a file via FTP from my local computer to an FTP server, which is also on my local computer at the moment. I've got this sub I'm calling:

    Public Sub UploadFTPFile(ByVal ftpservername, ByVal fullfilepath, ByVal filename, ByVal username, ByVal password)

    Dim clsRequest As System.Net.FtpWebRequest = _
    DirectCast(System.Net.WebRequest.Create("ftp://" & ftpservername & "/" & filename), System.Net.FtpWebRequest)
    clsRequest.Credentials = New System.Net.NetworkCredential(username, password)
    clsRequest.Method = System.Net.WebRequestMethods.Ftp.UploadFile

    clsRequest.KeepAlive = False

    ' read in file...
    Dim bFile() As Byte = System.IO.File.ReadAllBytes(fullfilepath)

    ' upload file...
    Dim clsStream As System.IO.Stream = _
        clsRequest.GetRequestStream()
    clsStream.Write(bFile, 0, bFile.Length)
    clsStream.Close()
    clsStream.Dispose()
End Sub

When calling the sub, I do it like this:

UploadFTPFile("192.168.1.3/Temp", selectedSoundFileLong, OpenFileDialog.SafeFileName, "", "")

In other words, in the Sub, this string:

DirectCast(System.Net.WebRequest.Create("ftp://" & ftpservername & "/" & filename), System.Net.FtpWebRequest)

, creates the following:

    DirectCast(System.Net.WebRequest.Create("ftp://192.168.1.3/Temp/test.mp3"), System.Net.FtpWebRequest)

And at this line in the sub:

        Dim clsStream As System.IO.Stream = _
        clsRequest.GetRequestStream()

This error occurs:

The remote server returned an error: (550) File unavailable

What could be the cause of this? I'm running an FTP Server using Golder FTP Server, which is freeware. I think it's setup correctly because connecting to the FTP Server using the exact same string as above using Windows Explorer works great.

A: 

Try flipping the UsePassive property. Control and data use different ports in FTP, it's possible you're getting through on the control port but getting blocked somehow on the data port.

robertc
Thanx, I tried this and it seemed to do the trick :)Even though, it didn't work alone, I needed to set some settings on the FTP Server to be able to allow incoming traffic. Works now, thanx! :)
Kenny Bones
Btw, any idea how I can have a progressbar show the progress?
Kenny Bones
A: 

are you sure there is no extra white space in the webRequest string? I believe you would get this error if the string happened to be like "ftp://192.168.1.3/ Temp/test.mp3" Also, check to make sure you have the correct privileges to write to that server. Additionally, make sure you file is test.mp3 and not test.MP3.

northpole
I didn't have ny spaces in the filename at all. The priveleges to write to the server was the solution :)
Kenny Bones