WIN32_FIND_DATA это правда [закрыто]C#

Место общения программистов C#
Ответить
Anonymous
 WIN32_FIND_DATA это правда [закрыто]

Сообщение Anonymous »

Это правда? Я хочу использовать WIN32_FIND_DATA для C#. Я хочу проверить, есть ли в приведенном ниже коде какие-либо ошибки для C#.
Пожалуйста, покажите мне другой способ, если вы найдете другой код получше.
Привет всем, привет. бродяга bejafoanc nsfkck Это правда? Я хочу использовать WIN32_FIND_DATA для C#. Я хочу проверить, есть ли в приведенном ниже коде какие-либо ошибки для C#.
Пожалуйста, покажите мне другой способ, если вы найдете другой код получше.
Привет всем, привет. бродяга бежафоанк nsfkck

using System;
using System.IO;
using System.Runtime.InteropServices;
using System.Text;

class WinHttpUploadFileExample
{
// Khai báo các hàm từ winhttp.dll
[DllImport("winhttp.dll", SetLastError = true)]
public static extern IntPtr WinHttpOpen(
[MarshalAs(UnmanagedType.LPWStr)] string pwszUserAgent,
uint dwAccessType,
IntPtr pwszProxyName,
IntPtr pwszProxyBypass,
uint dwFlags);

[DllImport("winhttp.dll", SetLastError = true)]
public static extern IntPtr WinHttpConnect(
IntPtr hSession,
[MarshalAs(UnmanagedType.LPWStr)] string pswzServerName,
ushort nServerPort,
uint dwReserved);

[DllImport("winhttp.dll", SetLastError = true)]
public static extern IntPtr WinHttpOpenRequest(
IntPtr hConnect,
[MarshalAs(UnmanagedType.LPWStr)] string pwszVerb,
[MarshalAs(UnmanagedType.LPWStr)] string pwszObjectName,
[MarshalAs(UnmanagedType.LPWStr)] string pwszVersion,
[MarshalAs(UnmanagedType.LPWStr)] string pwszReferrer,
IntPtr[] ppwszAcceptTypes,
uint dwFlags);

[DllImport("winhttp.dll", SetLastError = true)]
public static extern bool WinHttpSendRequest(
IntPtr hRequest,
[MarshalAs(UnmanagedType.LPWStr)] string pwszHeaders,
uint dwHeadersLength,
IntPtr lpOptional,
uint dwOptionalLength,
uint dwTotalLength,
IntPtr dwContext);

[DllImport("winhttp.dll", SetLastError = true)]
public static extern bool WinHttpReceiveResponse(
IntPtr hRequest,
IntPtr lpReserved);

[DllImport("winhttp.dll", SetLastError = true)]
public static extern bool WinHttpWriteData(
IntPtr hRequest,
IntPtr lpBuffer,
uint dwNumberOfBytesToWrite,
out uint lpdwNumberOfBytesWritten);

[DllImport("winhttp.dll", SetLastError = true)]
public static extern bool WinHttpCloseHandle(IntPtr hInternet);

// Constants for the WinHttpOpen function
public const uint WINHTTP_ACCESS_TYPE_DEFAULT_PROXY = 0;
public const uint WINHTTP_FLAG_SECURE = 0x00800000;

public static void Main()
{
string filePath = @"C:\Users\HP\Downloads\TestUpload.txt"; // Đường dẫn tới tệp bạn muốn upload
string serverUrl = "/upload"; // Đường dẫn URL upload trên server
string serverHost = "www.example.com"; // Tên miền hoặc địa chỉ IP của server

// Mở phiên làm việc HTTP
IntPtr hSession = WinHttpOpen("WinHTTP Example/1.0", WINHTTP_ACCESS_TYPE_DEFAULT_PROXY, IntPtr.Zero, IntPtr.Zero, 0);

if (hSession != IntPtr.Zero)
{
// Kết nối tới máy chủ
IntPtr hConnect = WinHttpConnect(hSession, serverHost, 80, 0);

if (hConnect != IntPtr.Zero)
{
// Mở yêu cầu POST
IntPtr hRequest = WinHttpOpenRequest(hConnect, "POST", serverUrl, null, null, null, 0);

if (hRequest != IntPtr.Zero)
{
// Đọc nội dung tệp từ local
byte[] fileBytes = File.ReadAllBytes(filePath);
uint fileSize = (uint)fileBytes.Length;

// Chuẩn bị dữ liệu để upload
IntPtr buffer = Marshal.AllocHGlobal(fileBytes.Length);
Marshal.Copy(fileBytes, 0, buffer, fileBytes.Length);

// Gửi yêu cầu với dữ liệu tệp
bool requestSent = WinHttpSendRequest(hRequest, "Content-Type: application/octet-stream\r\n", 0, IntPtr.Zero, 0, fileSize, IntPtr.Zero);

if (requestSent)
{
uint bytesWritten = 0;
bool dataWritten = WinHttpWriteData(hRequest, buffer, fileSize, out bytesWritten);

if (dataWritten && bytesWritten == fileSize)
{
Console.WriteLine("File đã được gửi thành công!");

// Nhận phản hồi từ máy chủ
if (WinHttpReceiveResponse(hRequest, IntPtr.Zero))
{
Console.WriteLine("Server đã nhận file!");
}
else
{
Console.WriteLine("Lỗi: Không nhận được phản hồi từ máy chủ.");
}
}
else
{
Console.WriteLine("Lỗi: Không thể gửi dữ liệu tệp.");
}
}
else
{
Console.WriteLine("Lỗi: Không thể gửi yêu cầu.");
}

// Giải phóng bộ nhớ
Marshal.FreeHGlobal(buffer);
WinHttpCloseHandle(hRequest);
}

WinHttpCloseHandle(hConnect);
}

WinHttpCloseHandle(hSession);
}
}
}



Подробнее здесь: https://stackoverflow.com/questions/790 ... a-its-true
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»