VintaSoft Twain .NET SDK 12.1
In This Topic
    How to upload acquired image onto FTP server?
    In This Topic
    Here is an example that demonstrates how to upload acquired image as JPEG file onto FTP server:
    System.Windows.Forms.Form _parentForm;
    System.Windows.Forms.TextBox _uploadStatus;
    System.Windows.Forms.ProgressBar _progressBar;
    
    Vintasoft.Twain.ImageUploading.Ftp.FtpUpload _ftpUpload = null;
    
    bool _sendingData;
    
    
    /// <summary>
    /// Upload acquired image to FTP server.
    /// </summary>
    public void UploadAcquiredImageAsJpegToFtp(Vintasoft.Twain.AcquiredImage acquiredImage)
    {
        try
        {
            // create FTP uploader
            _ftpUpload = new Vintasoft.Twain.ImageUploading.Ftp.FtpUpload(_parentForm);
    
            // subscribe to the events
            _ftpUpload.StatusChanged += new System.EventHandler<Vintasoft.Twain.ImageUploading.Ftp.StatusChangedEventArgs>(_ftpUpload_StatusChanged);
            _ftpUpload.ProgressChanged += new System.EventHandler<Vintasoft.Twain.ImageUploading.Ftp.ProgressChangedEventArgs>(_ftpUpload_ProgressChanged);
            _ftpUpload.Completed += new System.EventHandler<Vintasoft.Twain.ImageUploading.Ftp.CompletedEventArgs>(_ftpUpload_Completed);
    
            // set FTP upload parameters
            _ftpUpload.Host = "ftp.test.com";
            _ftpUpload.User = "user";
            _ftpUpload.Password = "password";
            _ftpUpload.PassiveMode = true;
            _ftpUpload.Timeout = 2000;
            _ftpUpload.Path = "/images/";
            _ftpUpload.AddFile("scan.jpg", acquiredImage.GetAsStream(new Vintasoft.Twain.ImageEncoders.TwainJpegEncoderSettings()));
    
            // post data to the server
            _ftpUpload.PostData();
        }
        catch (System.Exception ex)
        {
            _uploadStatus.Text = string.Format("{0}{1}", _uploadStatus.Text, ex);
        }
        finally
        {
            // set maximal value of the progress bar
            _progressBar.Maximum = _ftpUpload.BytesTotal;
        }
    }
    
    /// <summary>
    /// Status of FTP uploading is changed.
    /// </summary>
    private void _ftpUpload_StatusChanged(object sender, Vintasoft.Twain.ImageUploading.Ftp.StatusChangedEventArgs e)
    {
        // show current upload status in the status string
        _uploadStatus.Text = string.Format("{0}{1}{2}", _uploadStatus.Text, e.StatusString, System.Environment.NewLine);
    }
    
    /// <summary>
    /// FTP uploading is in progress.
    /// </summary>
    private void _ftpUpload_ProgressChanged(object sender, Vintasoft.Twain.ImageUploading.Ftp.ProgressChangedEventArgs e)
    {
        // show the size of uploading data (once per upload)
        if (!_sendingData)
        {
            _uploadStatus.Text = string.Format("{0}({1} bytes){2}", _uploadStatus.Text, e.BytesTotal, System.Environment.NewLine);
            _sendingData = true;
        }
    
        // show current upload progress in progress bar
        _progressBar.Value = e.BytesUploaded;
    
        // show current upload progress, in bytes, in the status string
        _uploadStatus.Text = string.Format("{0}{1} ", _uploadStatus.Text, e.BytesUploaded);
    }
    
    /// <summary>
    /// FTP uploading is completed.
    /// </summary>
    private void _ftpUpload_Completed(object sender, Vintasoft.Twain.ImageUploading.Ftp.CompletedEventArgs e)
    {
        _uploadStatus.Text = string.Format("{0}{1}", _uploadStatus.Text, System.Environment.NewLine);
    
        if (e.ErrorCode == Vintasoft.Twain.ImageUploading.Ftp.ErrorCode.None)
            _uploadStatus.Text = string.Format("{0}FTP: Image is uploaded successfully!", _uploadStatus.Text);
        else
            _uploadStatus.Text = string.Format("{0}FTP error: {1}", _uploadStatus.Text, e.ErrorString);
    
        _uploadStatus.Text = string.Format("{0}", System.Environment.NewLine);
    }
    
    Dim _parentForm As Form
    Dim _uploadStatus As TextBox
    Dim _progressBar As ProgressBar
    
    Dim _ftpUpload As Vintasoft.Twain.ImageUploading.Ftp.FtpUpload
    
    Dim _sendingData As Boolean = False
    
    
    ' Upload acquired image to HTTP server.
    Private Sub UploadAcquiredImageAsJpegToFtp(ByVal acquiredImage As Vintasoft.Twain.AcquiredImage)
        Try
            ' create FTP uploader
            _ftpUpload = New Vintasoft.Twain.ImageUploading.Ftp.FtpUpload(_parentForm)
    
            ' subscribe to the events
            AddHandler _ftpUpload.StatusChanged, AddressOf _ftpUpload_StatusChanged
            AddHandler _ftpUpload.ProgressChanged, AddressOf _ftpUpload_ProgressChanged
            AddHandler _ftpUpload.Completed, AddressOf _ftpUpload_Completed
    
            ' set FTP upload parameters
            _ftpUpload.Host = "ftp.test.com"
            _ftpUpload.User = "user"
            _ftpUpload.Password = "password"
            _ftpUpload.PassiveMode = True
            _ftpUpload.Timeout = 2000
            _ftpUpload.Path = "/images/"
            _ftpUpload.AddFile("scan.jpg", acquiredImage.GetAsStream(New Vintasoft.Twain.ImageEncoders.TwainJpegEncoderSettings()))
    
            ' post data to the server
            _ftpUpload.PostData()
    
        Catch ex As Exception
            _uploadStatus.Text = String.Format("{0}{1}", _uploadStatus.Text, ex)
        Finally
            ' set maximal value of the progress bar
            _progressBar.Maximum = _ftpUpload.BytesTotal
        End Try
    End Sub
    
    ' Handler of the upload status changed event.
    Private Sub _ftpUpload_StatusChanged(ByVal sender As System.Object,
                                         ByVal e As Vintasoft.Twain.ImageUploading.Ftp.StatusChangedEventArgs)
        ' show current upload status in the status string
        _uploadStatus.Text = String.Format("{0}{1}{2}", _uploadStatus.Text, e.StatusString, Environment.NewLine)
    End Sub
    
    ' Handler of the upload progress event.
    Private Sub _ftpUpload_ProgressChanged(ByVal sender As Object,
                                            ByVal e As Vintasoft.Twain.ImageUploading.Ftp.ProgressChangedEventArgs)
        ' show the size of uploading data (once per upload)
        If Not _sendingData Then
            _uploadStatus.Text = String.Format("{0}({1} bytes){2}", _uploadStatus.Text, e.BytesTotal, Environment.NewLine)
            _sendingData = True
        End If
    
        ' show current upload progress in progress bar
        _progressBar.Value = e.BytesUploaded
    
        ' show current upload progress, in bytes, in the status string
        _uploadStatus.Text = String.Format("{0}{1} ", _uploadStatus.Text, e.BytesUploaded)
    End Sub
    
    ' Handler of the upload completed event.
    Private Sub _ftpUpload_Completed(ByVal sender As Object,
                                     ByVal e As Vintasoft.Twain.ImageUploading.Ftp.CompletedEventArgs)
        _uploadStatus.Text = String.Format("{0}{1}", _uploadStatus.Text, Environment.NewLine)
    
        If e.ErrorCode = Vintasoft.Twain.ImageUploading.Ftp.ErrorCode.None Then
            _uploadStatus.Text = String.Format("{0}FTP: Image is uploaded successfully!", _uploadStatus.Text)
        Else
            _uploadStatus.Text = String.Format("{0}FTP error: {1}", _uploadStatus.Text, e.ErrorString)
        End If
    
        _uploadStatus.Text = String.Format("{0}", Environment.NewLine)
    End Sub