dmontgom
asked on
Use FTP from asp .net
Hello,
When a user clicks a button I want to ftp a file to some location from asp.net code behind using vb. How do I do this in .net 2003?
Please show code.
Thanks
When a user clicks a button I want to ftp a file to some location from asp.net code behind using vb. How do I do this in .net 2003?
Please show code.
Thanks
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
http://www.developer.com/net/vb/article.php/10926_3424121_1
In the earlier example, the FtpStream class is used to handle the data stream that is delivered to the server together with the request, as shown in the following sample code:
Public Class FtpWebResponse
Inherits WebResponse
Public Overrides Property ContentType() As String
Get
'Override
End Get
Set(ByVal Value As String)
'Override
End Set
End Property
Public Overrides Function GetResponseStream() As Stream
'Override
End Function
End Class
Similarly, by using WebRequest you can manage the details of a request to an Internet resource. This sample code uses the FtpWebRequest class that inherits from the WebRequest class. The WebRequest.Create method creates an FTP WebRequest instance based on the URI class that is passed. The instance that is returned is a typecast to the FtpWebRequest class to access protocol-specific properties. Typically, the WebRequest instance provides all the necessary information to formulate a request.
The following sample code demonstrates the methods that are implemented or overridden in the FtpWebRequest class. For more information and implementation, visit the Download Center for the VbFtpClient.exe file that is mentioned earlier in this article.
Public Class FtpWebRequest
Inherits WebRequest
Public Overrides Property Method() As String
Get
'Override
End Get
Set(ByVal Value As String)
'Override
End Set
End Property
Public Overrides Property Credentials() As ICredentials
Get
'Override
End Get
Set(ByVal Value As ICredentials)
'Override
End Set
End Property
Public Overrides Property ConnectionGroupName() As String
Get
'Override
End Get
Set(ByVal Value As String)
'Override
End Set
End Property
Public Overrides Property ContentLength() As Long
Get
'Override
End Get
Set(ByVal Value As Long)
'Override
End Set
End Property
Public Overrides Property ContentType() As String
Get
'Override
End Get
Set(ByVal Value As String)
'Override
End Set
End Property
Public Overrides Property Proxy() As IWebProxy
Get
'Override
End Get
Set(ByVal Value As IWebProxy)
'Override
End Set
End Property
Public Overrides Function GetRequestStream() As Stream
'Override
End Function
Public Overrides Function GetResponse() As WebResponse
'Override
End Function
End Class
back to the top
Create VbFtpClient
The vbFtpClient application accesses the information from the Internet by using a request-response model. You can retrieve protocol-specific information by using the WebRequest and WebResponse classes. To retrieve protocol-specific information, register the descendants of WebRequest by using the WebRequest.RegisterPrefix static method. The IWebRequestCreate interface defines the method that WebRequest descendants will use to register with the WebRequest.Create method.
The following sample code demonstrates how to use IWebRequestCreate:
Public Class FtpRequestCreator
Implements IWebRequestCreate
Public Sub New()
End Sub
Public Overridable Function Create(ByVal Url As Uri) As WebRequest Implements IWebRequestCreate.Create
Return New FtpWebRequest(Url)
End Function
End Class
The following sample code demonstrates how the RegisterPrefix method is used and how to create a WebRequest instance:
' FtpRequestCreator class implements IWebRequestCreate class, which implements Create method.
Dim Creator As FtpRequestCreator = New FtpRequestCreator()
WebRequest.RegisterPrefix( "ftp:", Creator)
Dim szUri As String = New String("ftp://localhost")
' Create WebRequest.
Dim w As WebRequest = WebRequest.Create(szUri)
The WebRequest.RegisterPrefix method registers the class and notifies the descendants to use the FTP protocol for retrieving the data. After registration, descendants of WebRequest are created by using the WebRequest.Create method with an argument passed as URI. The WebRequest instance exposes properties, such as GetResponse, that control the request to the server and access to the data stream that is sent to the server. The GetResponse method of the WebRequest instance sends the request from the client application to the server that is identified in the URI.
Dim r As WebResponse = w.GetResponse()
Dim respstream As Stream = r.GetResponseStream()
If (respstream.CanRead) Then
Dim rdr As StreamReader = New StreamReader(respstream)
Dim resp As String = rdr.ReadToEnd()
rdr.Close()
Console.WriteLine(resp)
End If
The GetResponse method returns a WebResponse instance. The WebResponse provides access to the data that is returned by the server in the form of a stream returned by the GetResponseStream method. This stream can be used and modified in an application. You can derive a class from the stream class and override the method, based on application requirements.
For more information, visit the Download Center for the vbFtpClient.exe file that is mentioned earlier in this article.
back to the top
Steps to Run the VbFtpClient Executable
1. Download the vbFtpClient.exe file that is mentioned earlier in this article.
2. Extract the file.
3. Open the Readme.htm file in the browser.
4. To read the steps to build the application, click Building the sample.
5. To read the steps to run the application, click Running the sample.
Public Class FtpWebResponse
Inherits WebResponse
Public Overrides Property ContentType() As String
Get
'Override
End Get
Set(ByVal Value As String)
'Override
End Set
End Property
Public Overrides Function GetResponseStream() As Stream
'Override
End Function
End Class
Similarly, by using WebRequest you can manage the details of a request to an Internet resource. This sample code uses the FtpWebRequest class that inherits from the WebRequest class. The WebRequest.Create method creates an FTP WebRequest instance based on the URI class that is passed. The instance that is returned is a typecast to the FtpWebRequest class to access protocol-specific properties. Typically, the WebRequest instance provides all the necessary information to formulate a request.
The following sample code demonstrates the methods that are implemented or overridden in the FtpWebRequest class. For more information and implementation, visit the Download Center for the VbFtpClient.exe file that is mentioned earlier in this article.
Public Class FtpWebRequest
Inherits WebRequest
Public Overrides Property Method() As String
Get
'Override
End Get
Set(ByVal Value As String)
'Override
End Set
End Property
Public Overrides Property Credentials() As ICredentials
Get
'Override
End Get
Set(ByVal Value As ICredentials)
'Override
End Set
End Property
Public Overrides Property ConnectionGroupName() As String
Get
'Override
End Get
Set(ByVal Value As String)
'Override
End Set
End Property
Public Overrides Property ContentLength() As Long
Get
'Override
End Get
Set(ByVal Value As Long)
'Override
End Set
End Property
Public Overrides Property ContentType() As String
Get
'Override
End Get
Set(ByVal Value As String)
'Override
End Set
End Property
Public Overrides Property Proxy() As IWebProxy
Get
'Override
End Get
Set(ByVal Value As IWebProxy)
'Override
End Set
End Property
Public Overrides Function GetRequestStream() As Stream
'Override
End Function
Public Overrides Function GetResponse() As WebResponse
'Override
End Function
End Class
back to the top
Create VbFtpClient
The vbFtpClient application accesses the information from the Internet by using a request-response model. You can retrieve protocol-specific information by using the WebRequest and WebResponse classes. To retrieve protocol-specific information, register the descendants of WebRequest by using the WebRequest.RegisterPrefix static method. The IWebRequestCreate interface defines the method that WebRequest descendants will use to register with the WebRequest.Create method.
The following sample code demonstrates how to use IWebRequestCreate:
Public Class FtpRequestCreator
Implements IWebRequestCreate
Public Sub New()
End Sub
Public Overridable Function Create(ByVal Url As Uri) As WebRequest Implements IWebRequestCreate.Create
Return New FtpWebRequest(Url)
End Function
End Class
The following sample code demonstrates how the RegisterPrefix method is used and how to create a WebRequest instance:
' FtpRequestCreator class implements IWebRequestCreate class, which implements Create method.
Dim Creator As FtpRequestCreator = New FtpRequestCreator()
WebRequest.RegisterPrefix(
Dim szUri As String = New String("ftp://localhost")
' Create WebRequest.
Dim w As WebRequest = WebRequest.Create(szUri)
The WebRequest.RegisterPrefix method registers the class and notifies the descendants to use the FTP protocol for retrieving the data. After registration, descendants of WebRequest are created by using the WebRequest.Create method with an argument passed as URI. The WebRequest instance exposes properties, such as GetResponse, that control the request to the server and access to the data stream that is sent to the server. The GetResponse method of the WebRequest instance sends the request from the client application to the server that is identified in the URI.
Dim r As WebResponse = w.GetResponse()
Dim respstream As Stream = r.GetResponseStream()
If (respstream.CanRead) Then
Dim rdr As StreamReader = New StreamReader(respstream)
Dim resp As String = rdr.ReadToEnd()
rdr.Close()
Console.WriteLine(resp)
End If
The GetResponse method returns a WebResponse instance. The WebResponse provides access to the data that is returned by the server in the form of a stream returned by the GetResponseStream method. This stream can be used and modified in an application. You can derive a class from the stream class and override the method, based on application requirements.
For more information, visit the Download Center for the vbFtpClient.exe file that is mentioned earlier in this article.
back to the top
Steps to Run the VbFtpClient Executable
1. Download the vbFtpClient.exe file that is mentioned earlier in this article.
2. Extract the file.
3. Open the Readme.htm file in the browser.
4. To read the steps to build the application, click Building the sample.
5. To read the steps to run the application, click Running the sample.
Module Module1
' Declare the API functions
' The three that you will use are FtpGetFile (for downloading), FtpPutFile (for uploading), and InternetConnect (to specify the server and login credentials)
Private Declare Function InternetCloseHandle Lib "wininet.dll" (ByVal HINet As Integer) As Integer
Private Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" (ByVal sAgent As String, ByVal lAccessType As Integer, ByVal sProxyName As String, ByVal sProxyBypass As String, ByVal lFlags As Integer) As Integer
Private Declare Function InternetConnect Lib "wininet.dll" Alias "InternetConnectA" (ByVal hInternetSession As Integer, ByVal sServerName As String, ByVal nServerPort As Integer, ByVal sUsername As String, ByVal sPassword As String, ByVal lService As Integer, ByVal lFlags As Integer, ByVal lContext As Integer) As Integer
Private Declare Function FtpGetFile Lib "wininet.dll" Alias "FtpGetFileA" (ByVal hFtpSession As Integer, ByVal lpszRemoteFile As String, ByVal lpszNewFile As String, ByVal fFailIfExists As Boolean, ByVal dwFlagsAndAttributes As Integer, ByVal dwFlags As Integer, ByVal dwContext As Integer) As Boolean
Private Declare Function FtpPutFile Lib "wininet.dll" Alias "FtpPutFileA" (ByVal hFtpSession As Integer, ByVal lpszLocalFile As String, ByVal lpszRemoteFile As String, ByVal dwFlags As Integer, ByVal dwContext As Integer) As Boolean
' example of how to use the FtpGetFile Function
Sub Download()
Dim INet, INetConn As Integer
Dim RC As Boolean
INet = InternetOpen("FTP Connection", 1, vbNullString, vbNullString, 0)
INetConn = InternetConnect(INet, "www.myftpserver.com", 21, "myuser", "mypassword", 1, 0, 0)
RC = FtpGetFile(INetConn, "FTPFolder/MyFiles/MyFile. txt", "C:\Temp\MyFile.txt", False, 1, 0, 0)
If RC Then MsgBox("Transfer succesfull!")
InternetCloseHandle(INetCo nn)
InternetCloseHandle(INet)
End Sub
' example of how to use the FtpPutFile Function
Sub Upload()
Dim INet, INetConn As Integer
Dim RC As Boolean
INet = InternetOpen("FTP Connection", 1, vbNullString, vbNullString, 0)
INetConn = InternetConnect(INet, "www.watyf.com", 21, "myuser", "mypassword", 1, 0, 0)
RC = FtpPutFile(INetConn, "C:\Temp\MyFile.txt", "FTPFolder/MyFiles/MyFile. txt", 0, 0)
If RC Then MsgBox("Transfer succesfull!")
InternetCloseHandle(INetCo nn)
InternetCloseHandle(INet)
End Sub
End Module
' Declare the API functions
' The three that you will use are FtpGetFile (for downloading), FtpPutFile (for uploading), and InternetConnect (to specify the server and login credentials)
Private Declare Function InternetCloseHandle Lib "wininet.dll" (ByVal HINet As Integer) As Integer
Private Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" (ByVal sAgent As String, ByVal lAccessType As Integer, ByVal sProxyName As String, ByVal sProxyBypass As String, ByVal lFlags As Integer) As Integer
Private Declare Function InternetConnect Lib "wininet.dll" Alias "InternetConnectA" (ByVal hInternetSession As Integer, ByVal sServerName As String, ByVal nServerPort As Integer, ByVal sUsername As String, ByVal sPassword As String, ByVal lService As Integer, ByVal lFlags As Integer, ByVal lContext As Integer) As Integer
Private Declare Function FtpGetFile Lib "wininet.dll" Alias "FtpGetFileA" (ByVal hFtpSession As Integer, ByVal lpszRemoteFile As String, ByVal lpszNewFile As String, ByVal fFailIfExists As Boolean, ByVal dwFlagsAndAttributes As Integer, ByVal dwFlags As Integer, ByVal dwContext As Integer) As Boolean
Private Declare Function FtpPutFile Lib "wininet.dll" Alias "FtpPutFileA" (ByVal hFtpSession As Integer, ByVal lpszLocalFile As String, ByVal lpszRemoteFile As String, ByVal dwFlags As Integer, ByVal dwContext As Integer) As Boolean
' example of how to use the FtpGetFile Function
Sub Download()
Dim INet, INetConn As Integer
Dim RC As Boolean
INet = InternetOpen("FTP Connection", 1, vbNullString, vbNullString, 0)
INetConn = InternetConnect(INet, "www.myftpserver.com", 21, "myuser", "mypassword", 1, 0, 0)
RC = FtpGetFile(INetConn, "FTPFolder/MyFiles/MyFile.
If RC Then MsgBox("Transfer succesfull!")
InternetCloseHandle(INetCo
InternetCloseHandle(INet)
End Sub
' example of how to use the FtpPutFile Function
Sub Upload()
Dim INet, INetConn As Integer
Dim RC As Boolean
INet = InternetOpen("FTP Connection", 1, vbNullString, vbNullString, 0)
INetConn = InternetConnect(INet, "www.watyf.com", 21, "myuser", "mypassword", 1, 0, 0)
RC = FtpPutFile(INetConn, "C:\Temp\MyFile.txt", "FTPFolder/MyFiles/MyFile.
If RC Then MsgBox("Transfer succesfull!")
InternetCloseHandle(INetCo
InternetCloseHandle(INet)
End Sub
End Module