ローカル コンピューターから FTP サーバーに FTP 経由でファイルをアップロードしようとしていますが、これは現在もローカル コンピューター上にあります。私が呼んでいるこのサブを持っています:
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
サブを呼び出すときは、次のようにします。
UploadFTPFile("192.168.1.3/Temp", selectedSoundFileLong, OpenFileDialog.SafeFileName, "", "")
つまり、サブでは、この文字列:
DirectCast(System.Net.WebRequest.Create("ftp://" & ftpservername & "/" & filename), System.Net.FtpWebRequest)
、以下を作成します。
DirectCast(System.Net.WebRequest.Create("ftp://192.168.1.3/Temp/test.mp3"), System.Net.FtpWebRequest)
そして、サブのこの行で:
Dim clsStream As System.IO.Stream = _
clsRequest.GetRequestStream()
このエラーが発生します:
The remote server returned an error: (550) File unavailable
これの原因は何ですか?フリーウェアの Golder FTP Server を使用して FTP サーバーを実行しています。Windows エクスプローラーを使用して上記とまったく同じ文字列を使用して FTP サーバーに接続するとうまくいくので、正しくセットアップされていると思います。