VintaSoft Twain .NET SDK 15.0: 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