Code: Select all
using System;
using System.IO;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using System.Text.Json;
using System.Threading.Tasks;
using SlackNet;
using SlackNet.WebApi;
using UploadFile.Services;
class Program
{
static async Task Main()
{
string slackToken = "xoxb-my-token";
string channelId = "C0-cnannelid";
string filePath = @"C:\Users\Пользователь\Desktop\test.txt";
string fileName = Path.GetFileName(filePath);
byte[] fileBytes = System.IO.File.ReadAllBytes(filePath);
var api = new SlackServiceBuilder()
.UseApiToken(slackToken)
.GetApiClient();
var getUploadResponse = await api.Files.GetUploadUrlExternal(fileName, fileBytes.Length);
string uploadUrl = getUploadResponse.UploadUrl;
string fileId = getUploadResponse.FileId;
using var httpClient = new HttpClient();
using var fileContent = new ByteArrayContent(fileBytes);
fileContent.Headers.ContentType = new MediaTypeHeaderValue("text/plain");
var uploadResponse = await httpClient.PutAsync(uploadUrl, fileContent);
uploadResponse.EnsureSuccessStatusCode();
var uploadedFiles = await api.Files.CompleteUploadExternal(
new[] { new ExternalFileReference { Id = fileId, Title = fileName } },
channelId: channelId
);
if (uploadedFiles.Count == 0)
{
throw new Exception("Ошибка: файл не прикрепился к каналу.");
}
}
}
- channels:read
- chat:write
- dnd:read
- files:read
- files:write
- groups:read
- im:read
- incoming-webhook
- mpim:read
- pins:read
- pins:write
- remote_files:read
- remote_files:share
- remote_files:write
[*]chat:write
[*]files:read
[*]files:write
Pins: Lesen Sie < /li>
Pins: Schreiben Sie < /li>
Remote_files: Lesen Sie < /li>
remote_files: share < /li>
< /ol>