Как передать файл по http
Хелп, пожалуйста, я тут столкнулся с проблемой передачи файла по http. Сначала я сделал, что у меня есть две апи, первая отправляет сериализованный массив байтов, другая принимает этот массив и это всё работало до того момента пока я не заметил ошибку, которая заключалась в том, что тело запроса слишком большое. Сейчас я пришёл к тому, что следует отправлять поток, что должна принимать принимающая файл апишка, поток или массив байтов? Отправляю следующим образом, в ответе получаю 415 ошибку, в сам метод контроллера принимающей запрос API даже не попадаю, что и логично принимающий сервер не знает о таком типе как Stream
public async Task<UploadedFile?> CreateDocumentAsync
(string extension, Stream file, CancellationToken cancellationToken = default)
{
using (var content = new MultipartFormDataContent())
{
content.Add(new StringContent(extension, Encoding.UTF8), "extension");
content.Add(new StreamContent(file));
content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
using (var response = await _client.PostAsync("api/File/CreateDocument", content, cancellationToken))
{
response.EnsureSuccessStatusCode();
string responseString = await response.Content.ReadAsStringAsync(cancellationToken);
return JsonConvert.DeserializeObject<UploadedFile>(responseString);
}
}
}
[HttpPost]
[Route("CreateDocument")]
public async Task<IActionResult> CreateAsync(CreateDocumentRequest request, CancellationToken cancellationToken = default)
{
StaticFile staticFile = await SaveDocumentAsync(request.Extension, request.File, cancellationToken);
CreateFileResponse response = new()
{
Id = staticFile.Id,
Path = staticFile.Path
};
return Ok(response);
}
public class CreateDocumentRequest
{
public string Extension { get; set; }
public byte[] File { get; set; }
}