Sample code for 30+ languages & platforms
SQL Server

Bandwidth Throttled Asynchronous HTTP Upload

See more Upload Examples

Demonstrates how to do an HTTP upload asynchronously in a background thread with limiting the rate to an approximate number of bytes/second. The only difference between this example and one without bandwidth throttling is that the BandwidthThrottleUp property is set.

Chilkat SQL Server Downloads

SQL Server
--
CREATE PROCEDURE ChilkatSample
AS
BEGIN
    DECLARE @hr int
    DECLARE @iTmp0 int
    DECLARE @iTmp1 int
    DECLARE @iTmp2 int
    DECLARE @sTmp0 nvarchar(4000)
    DECLARE @success int
    SELECT @success = 0

    DECLARE @upload int
    EXEC @hr = sp_OACreate 'Chilkat.Upload', @upload OUT
    IF @hr <> 0
    BEGIN
        PRINT 'Failed to create ActiveX component'
        RETURN
    END

    --  Specify the page (ASP, ASP.NET, Perl, Python, Ruby, CGI, etc)
    --  that will process the HTTP Upload.
    EXEC sp_OASetProperty @upload, 'Hostname', 'www.mywebserver.com'
    EXEC sp_OASetProperty @upload, 'Path', '/receiveUpload.aspx'

    --  Add one or more files to be uploaded.
    EXEC sp_OAMethod @upload, 'AddFileReference', NULL, 'file1', 'dude.gif'
    EXEC sp_OAMethod @upload, 'AddFileReference', NULL, 'file2', 'pigs.xml'
    EXEC sp_OAMethod @upload, 'AddFileReference', NULL, 'file3', 'sample.doc'

    --  Set the BandwidthThrottleUp property to throttle to approx 64K/second
    EXEC sp_OASetProperty @upload, 'BandwidthThrottleUp', 65536

    --  Begin the HTTP upload in a background thread:
    EXEC sp_OAMethod @upload, 'BeginUpload', @success OUT
    IF @success <> 1
      BEGIN
        EXEC sp_OAGetProperty @upload, 'LastErrorText', @sTmp0 OUT
        PRINT @sTmp0
      END
    ELSE
      BEGIN

        PRINT 'Upload started...'
      END

    --  Wait for the upload to finish.
    --  Print the progress as we wait...
    EXEC sp_OAGetProperty @upload, 'UploadInProgress', @iTmp0 OUT
    WHILE (@iTmp0 = 1)
      BEGIN
        --  We can abort the upload at any point by calling:
        --  upload.AbortUpload();

        --  Display the percentage complete and the number of bytes uploaded so far..
        --  The total upload size will become set after the upload begins:
        EXEC sp_OAGetProperty @upload, 'PercentUploaded', @iTmp0 OUT

        EXEC sp_OAGetProperty @upload, 'NumBytesSent', @iTmp1 OUT

        EXEC sp_OAGetProperty @upload, 'TotalUploadSize', @iTmp2 OUT
        PRINT @iTmp0 + '% ' + @iTmp1 + '/' + @iTmp2

        --  Sleep 2/10ths of a second.
        EXEC sp_OAMethod @upload, 'SleepMs', NULL, 200

      END

    --  Did the upload succeed?
    EXEC sp_OAGetProperty @upload, 'UploadSuccess', @iTmp0 OUT
    IF @iTmp0 = 1
      BEGIN

        PRINT 'Files uploaded!'
      END
    ELSE
      BEGIN
        EXEC sp_OAGetProperty @upload, 'LastErrorText', @sTmp0 OUT
        PRINT @sTmp0
      END

    EXEC @hr = sp_OADestroy @upload


END
GO