VintaSoft Twain .NET SDK 15.4: Руководство для .NET разработчика
В этом разделе
Как загрузить отсканированное изображение на HTTP(S) сервер?
В этом разделе
Вот C#/VB.NET код, который демонстрирует, как загрузить отсканированное изображение в виде JPEG файла на HTTP сервер:
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