HTTP.Download

HTTP.Download ( 

string   URL,

string   Filename,

number   Mode = MODE_BINARY,

number   Timeout = 20,

number   Port = 80,

table    AuthData = nil,

table    ProxyData = nil,

function CallbackFunction = nil )

Example 1

HTTP.Download("http://www.indigorose.com/downloads/sample.zip", _TempFolder.."\\sample.zip", MODE_BINARY, 20, 80, nil, nil, nil);

Downloads the file "sample.zip" from "http://www.indigorose.com/downloads" into the user's Temporary folder.

Note: _TempFolder is a built-in variable that contains the path to the user's system "Temp" folder.

Example 2

-- Check to see if the user is connected to the internet
connected = HTTP.TestConnection("http://www.indigorose.com", 20, 80, nil, nil);

-- If they are connected.
if connected then
    -- Download a file to their temporary directory.
    StatusDlg.Show(MB_ICONNONE, false);
    HTTP.Download("http://www.indigorose.com/setup.exe", _TempFolder.."\\setup.exe", MODE_BINARY, 20, 80, nil, nil, nil);

    -- Get any error codes that may have been returned by the download action.
    error = Application.GetLastError();
    StatusDlg.Hide();


    -- If there was an error during the download, display the error message.
    if error ~= 0 then
        result = Dialog.Message("Error", _tblErrorMessages[error], MB_OK, MB_ICONEXCLAMATION, MB_DEFBUTTON1);

    -- If there was no error during the download.
    else
        --Get the CRC value of the downloaded file.
        crc_value = File.GetCRC(_TempFolder.."\\setup.exe");
        -- Check to see if the CRC value matches it's expected value.
        if crc_value == 824907888 then
    
            -- Run the exectuable that was downloaded.
            File.Run(_TempFolder.."\\setup.exe", "", "", SW_SHOWNORMAL, true);


        -- The CRC value does not match. Display an error message to the user.
        else
            result = Dialog.Message("Error", "The downloaded file is incomplete. Please try downloading again.", MB_OK, MB_ICONSTOP, MB_DEFBUTTON1);
        end
    end

-- Display a notice informing them that they are not connected.
else
    Dialog.Message("Internet Error", "You are not connected to the internet. Please connect to download.");
end

This example first checks to see if the user has an internet connection. If they do, a file is downloaded to their temporary directory. That file is then checked to make sure it is complete and not corrupt before launching it. A series of checks are performed in this script to handle any errors that occur and displays notification messages to the user if any actions fail.

Note: _TempFolder is a built-in variable that contains the path to the user's system "Temp" folder.

Example 3

-- Callback function for HTTP.Download
function DownloadCallback (nDownloaded, nTotal, TransferRate, SecondLeft, SecondsLeftFormat, Message)
    -- Convert total and downloaded bytes into formatted strings
    sDownloaded = String.GetFormattedSize(nDownloaded, FMTSIZE_AUTOMATIC, true);
    sTotal = String.GetFormattedSize(nTotal, FMTSIZE_AUTOMATIC, true);

    -- Output time left, formatted.
    StatusDlg.SetMessage("Currently downloading file . . . Time Left: " .. SecondsLeftFormat);
    
    -- Output formatted sizes to user through statusdlg status text
    StatusDlg.SetStatusText("Downloaded: " .. sDownloaded .. " / " .. sTotal);

    -- Set meter position (fraction downloaded * max meter range)
    StatusDlg.SetMeterPos((nDownloaded / nTotal) * 65534);
end



-- Show the StatusDlg
StatusDlg.Show(0, false);

-- Set statusdlg title and message
StatusDlg.SetTitle("Downloading . . . ");

-- Set meter range (max range = 65534)
StatusDlg.SetMeterRange(0, 65534);

-- Download a file from the internet to the user's computer
-- Uses DownloadCallback() as the callback function
HTTP.Download("http://www.yourdomain.com/downloads/update.exe", _TempFolder.."\\update.exe", MODE_BINARY, 20, 80, nil, nil, DownloadCallback);

-- Hide the StatusDlg
StatusDlg.Hide();

Downloads a file from the internet onto the user's computer.   The callback function "DownloadCallback" controls the Status Dialog.

See also:  Related Actions