PostData() Метод (HttpUpload)
В этом разделе
Отправляет данные на сервер HTTP/HTTPS методом POST.
Синтаксис
'Declaration
Public Function PostData() As Boolean
Return Value
true, если процесс загрузки был запущен успешно; в противном случае, false.
Исключения
Ремарки
Этот метод инициализирует асинхронный процесс загрузки файла, и файл будет загружен на сервер только тогда, когда будет сгенерировано событие Completed или значение StatusCode будет установлено в значение StatusCode.Completed.
Процесс загрузки можно прервать с помощью метода Abort.
Пример
Вот C#/VB.NET код, который демонстрирует, как загрузить полученное изображение в виде файла JPEG на HTTP-сервер.
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
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));
}
Требования
Целевые платформы: .NET 8; .NET 7; .NET 6; .NET Framework 4.8, 4.7, 4.6, 4.5, 4.0, 3.5
Смотрите также