|
|
![]() |
|
||
|
|
|||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Visual Basic Internet Routines FtpGetFile: Download Files via FTP |
|
| Posted: | Saturday January 08, 2000 |
| Updated: | Monday December 26, 2011 |
| Applies to: | VB4-32, VB5, VB6 |
| Developed with: | VB6, Windows NT4 |
| OS restrictions: | None |
| Author: | VBnet - Randy Birch |
|
Related: |
DoFileDownload: Customize the IE Download Dialog DoFileDownload: Download Files Using IE's Download Dialog FtpFindFirstFile: Connect and Retrieve FTP File Listings FtpFindFirstFile: Download Files via FTP with a Download Progress Callback |
| Prerequisites |
| Established network connection or personal web server/IIS and the project created in FtpFindFirstFile: Connect and Retrieve FTP File Listings. |
|
|
Adding a simple file download mechanism to the demo created in
FtpFindFirstFile: Connect and Retrieve FTP File Listings is straightforward,
requiring only one API, and code added to the Command4_Click event, as well as the List1_Click event. |
| BAS Module Code |
|
|
| Add the following additional code to the FtpFindFirstFile: Connect and Retrieve FTP File Listings BAS module: |
|
|
Option Explicit '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' Copyright ©1996-2011 VBnet/Randy Birch, All Rights Reserved. ' Some pages may also contain other copyrights by the author. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' Distribution: You can freely use this code in your own ' applications, but you may not reproduce ' or publish this code on any web site, ' online service, or distribute as source ' on any media without express permission. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Public Declare Function FtpGetFile Lib "wininet" _ Alias "FtpGetFileA" _ (ByVal hConnect As Long, _ ByVal lpszRemoteFile As String, _ ByVal lpszNewFile As String, _ ByVal fFailIfExists As Long, _ ByVal dwFlagsAndAttributes As Long, _ ByVal dwFlags As Long, _ ByVal dwContext As Long) As Long |
| Form Code |
|
|
| To the form code from FtpFindFirstFile: Connect and Retrieve FTP File Listings, change the Form_Load code to set the caption of Command4 to "Download", and add the following additional code to the form: |
|
|
Option Explicit Private Sub List1_Click()
Dim sNewPath As String
Dim sPath As String
'get the desired directory from the list
sNewPath = List1.List(List1.ListIndex)
'If a root item or directory is selected,
'disable the download button
Command4.Enabled = (Right$(sNewPath, 1) <> sSlash) And _
(sNewPath <> sRootDots)
End Sub
Private Sub Command4_Click()
Dim sRemoteFile As String
Dim sNewFile As String
Dim sFile As String
Dim sCurrDir As String
'Show the wait cursor
Screen.MousePointer = vbHourglass
'Only if a valid connection...
If hConnect Then
'get the current directory and
'selected list item
sCurrDir = GetFTPDirectory(hConnect)
sFile = (List1.List(List1.ListIndex))
'build the necessary strings. The
'directory is qualified, so contains
'the terminating slash.
'
'Change sNewFile to a valid path
'on your system!
sRemoteFile = sCurrDir & sFile
sNewFile = "d:\ftptest\" & sFile
'just a message to tell what's happening
Text2.Text = "attempting to downloaded " & sFile & sRootDots
Text2.Refresh
'download the file
If FtpGetFile(hConnect, _
sRemoteFile, _
sNewFile, _
False, _
FILE_ATTRIBUTE_ARCHIVE, _
FTP_TRANSFER_TYPE_UNKNOWN, _
0&) Then
'show the success message
Text2.Text = sFile & " has been downloaded to " & sNewFile
Else
'show any error
Text2.Text = GetErr(Err.LastDllError)
End If 'If FtpGetFile
End If 'If hConnect
Screen.MousePointer = vbDefault
End Sub |
| Comments |
| Now, selecting a file will enable the download button
which coincidentally, when pressed, will do just that. Make sure that the target directory on your system exists.
As coded, the download method will overwrite existing files of the same name. To prevent this, set the fFailIfExists flag in the FtpGetFile API to 1. |
|
|
|
|
|
|||||
|
|||||
|
|
|||||
|
Copyright ©1996-2011 VBnet and Randy Birch. All Rights Reserved. |
![]() |