Async Function AttachFileToListItem(siteUrl As String, username As String, password As String, listName As String, itemId As Integer, filePath As String) As Task
Dim credentials As String = Convert.ToBase64String(Encoding.ASCII.GetBytes($"{username}:{password}"))
Using client As New HttpClient()
client.DefaultRequestHeaders.Authorization = New AuthenticationHeaderValue("Basic", credentials)
Dim fileContent As New StreamContent(File.OpenRead(filePath))
fileContent.Headers.ContentDisposition = New ContentDispositionHeaderValue("form-data") With {
.Name = "file",
.FileName = Path.GetFileName(filePath)
}
Dim multipartContent As New MultipartFormDataContent()
multipartContent.Add(fileContent)
Dim endpointUrl As String = $"{siteUrl}/_api/web/lists/getbytitle('{listName}')/items({itemId})/AttachmentFiles/add(FileName='{Path.GetFileName(filePath)}')"
Dim response As HttpResponseMessage = Await client.PostAsync(endpointUrl, multipartContent)
If response.IsSuccessStatusCode Then
Console.WriteLine($"File '{Path.GetFileName(filePath)}' attached to item with ID {itemId} successfully.")
Else
Console.WriteLine($"Failed to attach file. StatusCode: {response.StatusCode}")