|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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. |