Download a text file using HTTP

Can anyone give me an EXAMPLE of how to download a text file from a server onto the local machine without any user interaction (ie no prompts to run from current location or save).

Ie the answer I am looking for is a complete version of the following

Public Function GetFile(byval sURL as string, byval sFileName as string) as Boolean

    'Download and store file at sURL as sFilename
    'Return True/False based on success of operation

End Function


I have seen a very similar question posted here before but the accepted answer wasnt a complete solution and I cant get it to work.

Anybody able to provide me with a complete example in the format above ?

Cheers
LVL 3
paulstampAsked:
Who is Participating?

Improve company productivity with a Business Account.Sign Up

x
 
AzraSoundConnect With a Mentor Commented:
If you wanted to write directly to the file on the disk and surpass first putting the info into a byte array then you can use:

Dim strURL As String      ' URL string
Dim intFile As Integer   ' FreeFile variable
IntFile = FreeFile()
strURL = "http://www.youresite.com/text.text"
Open "c:\temp\myfile.txt" For Output _
As #IntFile
Write #IntFile, Inet1.OpenURL(strURL)
Close #IntFile
0
 
AzraSoundCommented:
are you partial against using the inet control?
0
 
paulstampAuthor Commented:
Nope... thats fine.
0
Keep up with what's happening at Experts Exchange!

Sign up to receive Decoded, a new monthly digest with product updates, feature release info, continuing education opportunities, and more.

 
AzraSoundCommented:
well you can stick an inet control on your form and try this:

Dim b() As Byte
Dim intCount As Integer
Dim strData As String

Inet1.Cancel ' Stops any current operations

b() = Inet1.OpenURL("http://www.vbsquare.com/index.html", icByteArray)

For intCount = 0 To UBound(b) - 1

  strData = strData & Chr(b(intCount))
Next intCount

Open "myfile.txt" For Binary Access Write As #1

Put #1, , b()

Close #1



0
 
ArkCommented:
Hi
What do you meen "Text File?" Page?
Add Internet Transfer Control(Inet1) at your form

Private Function GetPage(sURL As String, sFile As String) As Boolean
   Dim nFile As Integer
   GetPage = True
   On Error GoTo ERROR_GetPage
   Dim b() As Byte
   Inet1.Cancel
   Inet1.Protocol = icHTTP
   Inet1.URL = sURL
   b() = Inet1.OpenURL(, icByteArray)
   nFile = FreeFile
   Open sFile For Binary Access Write As nFile
   Put nFile, , b()
   Close nFile

EXIT_GetPage:
   Exit Function

ERROR_GetPage:
Select Case MsgBox("Error " & Err.Number & ": " & Err.Description & " at line: " & Erl, vbAbortRetryIgnore + vbCritical, "Error")
       Case vbAbort
            Screen.MousePointer = vbDefault
            GetPage = False
            Resume EXIT_GetPage:
       Case vbRetry
            Resume
       Case vbIgnore
            GetPage = False
            Resume Next
End Select
Resume EXIT_GetPage
End Function
0
 
ArkCommented:
Hi
AzraSound:Sorry, look at time when i posted message - I didn't see your comments.
Cheers
0
 
AzraSoundCommented:
Not a problem....the more the merrier for those who need answers  =)
0
 
paulstampAuthor Commented:
Thanks AzraSound... thats pretty much what I needed. Only two minor problems :

a) Unfortunately it puts quotes around the data in the file but thats not a big issue.

b) It seems to be cacheing the file somewhere : The situation is I'm writing a vb front end to a web-based system (I'm writing both sides of the equation), and when I modify the text file on my web site I still seem to be getting the file I first downloaded.

Any ideas (not to worry if you havent - you have already answered my real question).

Cheers
0
 
paulstampAuthor Commented:
Actually.. scrub the last point - I've found out why its downloading an old version - got two different versions of the web site and I'm looking at wrong one !
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.