Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Downloading Internet files
Message
From
14/02/2007 03:11:50
 
General information
Forum:
Visual FoxPro
Category:
COM/DCOM and OLE Automation
Miscellaneous
Thread ID:
01195397
Message ID:
01195459
Views:
17
>Hi, how to programatically download a Internet file that I know the URL?
>When I type this URL, the Browser ask for "Open" or "Download".
>
>Regards,
Function getfilefromurl
  Lparameters lcRemoteFile,lcLocalFile
  Local lnReturn
  Declare Integer URLDownloadToFile In urlmon.Dll;
    INTEGER pCaller, String szURL, String szFileName,;
    INTEGER dwReserved, Integer lpfnCB
  lnReturn = URLDownloadToFile (0, lcRemoteFile, lcLocalFile, 0, 0)
  Return lnReturn=0
For larger files, this function is better
Function getdatafromurl
  Lparameters pcUrlName
  Declare Integer InternetOpen In wininet.Dll String sAgent, ;
    INTEGER lAccessType, String sProxyName, ;
    STRING sProxyBypass, Integer lFlags

  Declare Integer InternetOpenUrl In wininet.Dll ;
    INTEGER hInternetSession, String sUrl, String sHeaders,;
    INTEGER lHeadersLength, Integer lFlags, Integer lContext

  Declare Integer InternetReadFile In wininet.Dll Integer hfile, ;
    STRING @sBuffer, Integer lNumberofBytesToRead, Integer @lBytesRead

  Declare short InternetCloseHandle In wininet.Dll Integer hInst

  #Define INTERNET_OPEN_TYPE_PRECONFIG 0
  #Define INTERNET_OPEN_TYPE_DIRECT 1
  #Define INTERNET_OPEN_TYPE_PROXY 3
  #Define SYNCHRONOUS 0
  #Define INTERNET_FLAG_RELOAD 2147483648
  #Define CR Chr(13)

  Local lsAgent, lhInternetSession, lhUrlFile, llOk, lnOk, lcRetVal, lcReadBuffer, lnBytesRead

* what application is using Internet services?
  lsAgent = "VPF 5.0"

  lhInternetSession = InternetOpen( lsAgent, INTERNET_OPEN_TYPE_PRECONFIG, ;
    '', '', SYNCHRONOUS)

* debugging line - uncomment to see session handle
* WAIT WINDOW "Internet session handle: " + LTRIM(STR(hInternetSession))

  If lhInternetSession = 0
    Wait Window "Internet session cannot be established" Time 2
    Return .Null.
  Endif

  lhUrlFile = InternetOpenUrl( lhInternetSession, pcUrlName, '', 0, ;
    INTERNET_FLAG_RELOAD, 0)

* debugging line - uncomment to see URL handle
* WAIT WINDOW "URL Handle: " + LTRIM(STR(hUrlFile))

  If lhUrlFile = 0
    Wait Window "URL cannot be opened"
    Return .Null.
  Endif

  lcRetVal = ""
  llOk = .T.

  Do While llOk
* set aside a big buffer
    lsReadBuffer = Space(32767)
    lnBytesRead = 0
    lnOk = InternetReadFile( lhUrlFile, @lsReadBuffer, Len(lsReadBuffer), @lnBytesRead)

    If ( lnBytesRead > 0 )
      lcRetVal = lcRetVal + Left( lsReadBuffer, lnBytesRead )
    Endif

* error trap - either a read failure or read past eof()
    llOk = ( lnOk = 1 ) And ( lnBytesRead > 0 )
  Enddo

* close all the handles we opened
  InternetCloseHandle( lhUrlFile )
  InternetCloseHandle( lhInternetSession )
  Clear Dlls InternetOpen,InternetCloseHandle,InternetOpenUrl ,InternetReadFile
* return the URL contents
Return lcRetVal
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform