VintaSoft Twain .NET SDK 15.4: Documentation for .NET developer
In This Topic
How to upload TWAIN acquired image to HTTP(S) server?
In This Topic
Here is an example that demonstrates how to upload TWAIN acquired image to HTTP(S) server:
Vintasoft.Twain.ImageUploading.Http.HttpUpload _httpUpload = null;

bool _isDataSending = false;


/// <summary>
/// Upload acquired image to HTTP server.
/// </summary>
/// <param name="acquiredImage"></param>
public void UploadAcquiredImageAsJpegToHttp(Vintasoft.Twain.AcquiredImage acquiredImage)
{
    try
    {
        // create HTTP uploader
        _httpUpload = new Vintasoft.Twain.ImageUploading.Http.HttpUpload();

        // subscribe to the events
        _httpUpload.StatusChanged += new System.EventHandler<Vintasoft.Twain.ImageUploading.Http.StatusChangedEventArgs>(_httpUpload_StatusChanged);
        _httpUpload.ProgressChanged += new System.EventHandler<Vintasoft.Twain.ImageUploading.Http.ProgressChangedEventArgs>(_httpUpload_ProgressChanged);
        _httpUpload.Completed += new System.EventHandler<Vintasoft.Twain.ImageUploading.Http.CompletedEventArgs>(_httpUpload_Completed);

        // set HTTP upload parameters
        _httpUpload.Url = "https://demos.vintasoft.com/AspNetCoreTwainScanningDemo/api/ImageUploadApi";
        _httpUpload.AddTextField("user", "guest");
        _httpUpload.AddTextField("password", "guest");
        _httpUpload.AddFileField("file", "demo.jpg", acquiredImage.GetAsStream(new Vintasoft.Twain.ImageEncoders.TwainJpegEncoderSettings()));

        // post data to the server
        _httpUpload.PostData();
    }
    catch (System.Exception ex)
    {
        System.Console.WriteLine(ex.Message);
    }
}

/// <summary>
/// Status of HTTP uploading is changed.
/// </summary>
private void _httpUpload_StatusChanged(object sender, Vintasoft.Twain.ImageUploading.Http.StatusChangedEventArgs e)
{
    System.Console.WriteLine(e.StatusString);
}

/// <summary>
/// HTTP uploading is in progress.
/// </summary>
private void _httpUpload_ProgressChanged(object sender, Vintasoft.Twain.ImageUploading.Http.ProgressChangedEventArgs e)
{
    // show the size of uploading data (once per upload)
    if (!_isDataSending)
    {
        System.Console.WriteLine(string.Format("Total bytes: {0}", e.BytesTotal));
        _isDataSending = true;
    }

    // show current upload progress, in bytes, in the status string
    System.Console.WriteLine(string.Format("Bytes uploaded: {0}", e.BytesUploaded));
}

/// <summary>
/// HTTP uploading is completed.
/// </summary>
private void _httpUpload_Completed(object sender, Vintasoft.Twain.ImageUploading.Http.CompletedEventArgs e)
{
    // if no errors
    if (e.ErrorCode == 0)
    {
        // if server returned "OK" status
        if (e.ResponseCode == System.Net.HttpStatusCode.OK)
        {
            System.Console.WriteLine(string.Format("HTTP: Image is uploaded successfully!"));
            System.Console.WriteLine(string.Format("Response content: {0}", e.ResponseContent));
        }
        // if server returned NOT "OK" status
        else
        {
            System.Console.WriteLine(string.Format("Response code: {0}", e.ResponseCode));
            System.Console.WriteLine(string.Format("Response string: {0}", e.ResponseString));
        }
    }
    // if error occurs
    else
        System.Console.WriteLine(string.Format("Error: {0}", e.ErrorString));
}
Private _httpUpload As Vintasoft.Twain.ImageUploading.Http.HttpUpload = Nothing

Private _isDataSending As Boolean = False


''' <summary>
''' Upload acquired image to HTTP server.
''' </summary>
''' <param name="acquiredImage"></param>
Public Sub UploadAcquiredImageAsJpegToHttp(acquiredImage As Vintasoft.Twain.AcquiredImage)
    Try
        ' create HTTP uploader
        _httpUpload = New Vintasoft.Twain.ImageUploading.Http.HttpUpload()

        ' subscribe to the events
        AddHandler _httpUpload.StatusChanged, New System.EventHandler(Of Vintasoft.Twain.ImageUploading.Http.StatusChangedEventArgs)(AddressOf _httpUpload_StatusChanged)
        AddHandler _httpUpload.ProgressChanged, New System.EventHandler(Of Vintasoft.Twain.ImageUploading.Http.ProgressChangedEventArgs)(AddressOf _httpUpload_ProgressChanged)
        AddHandler _httpUpload.Completed, New System.EventHandler(Of Vintasoft.Twain.ImageUploading.Http.CompletedEventArgs)(AddressOf _httpUpload_Completed)

        ' set HTTP upload parameters
        _httpUpload.Url = "https://demos.vintasoft.com/AspNetCoreTwainScanningDemo/api/ImageUploadApi"
        _httpUpload.AddTextField("user", "guest")
        _httpUpload.AddTextField("password", "guest")
        _httpUpload.AddFileField("file", "demo.jpg", acquiredImage.GetAsStream(New Vintasoft.Twain.ImageEncoders.TwainJpegEncoderSettings()))

        ' post data to the server
        _httpUpload.PostData()
    Catch ex As System.Exception
        System.Console.WriteLine(ex.Message)
    End Try
End Sub

''' <summary>
''' Status of HTTP uploading is changed.
''' </summary>
Private Sub _httpUpload_StatusChanged(sender As Object, e As Vintasoft.Twain.ImageUploading.Http.StatusChangedEventArgs)
    System.Console.WriteLine(e.StatusString)
End Sub

''' <summary>
''' HTTP uploading is in progress.
''' </summary>
Private Sub _httpUpload_ProgressChanged(sender As Object, e As Vintasoft.Twain.ImageUploading.Http.ProgressChangedEventArgs)
    ' show the size of uploading data (once per upload)
    If Not _isDataSending Then
        System.Console.WriteLine(String.Format("Total bytes: {0}", e.BytesTotal))
        _isDataSending = True
    End If

    ' show current upload progress, in bytes, in the status string
    System.Console.WriteLine(String.Format("Bytes uploaded: {0}", e.BytesUploaded))
End Sub

''' <summary>
''' HTTP uploading is completed.
''' </summary>
Private Sub _httpUpload_Completed(sender As Object, e As Vintasoft.Twain.ImageUploading.Http.CompletedEventArgs)
    ' if no errors
    If e.ErrorCode = 0 Then
        ' if server returned "OK" status
        If e.ResponseCode = System.Net.HttpStatusCode.OK Then
            System.Console.WriteLine(String.Format("HTTP: Image is uploaded successfully!"))
            System.Console.WriteLine(String.Format("Response content: {0}", e.ResponseContent))
        Else
            ' if server returned NOT "OK" status
            System.Console.WriteLine(String.Format("Response code: {0}", e.ResponseCode))
            System.Console.WriteLine(String.Format("Response string: {0}", e.ResponseString))
        End If
    Else
        ' if error occurs
        System.Console.WriteLine(String.Format("Error: {0}", e.ErrorString))
    End If
End Sub