Решение 1: применимо, если вы хотите, чтобы ваш клиент перенаправлялся на другой API
При условии, что вызывающий API понимает HTTP 302
и может действовать соответственно, 302 redirect
должен помочь вам .
public IActionResult Post()
{
return Redirect("http://file-handler-api/action");
}
Из документации метод Redirect возвращает клиенту 302 или 301 ответ.
Решение 2: C# Код для публикации файла с использованием HttpClient
Ниже c# код от этого сообщения в блоге . Это простой код, который создает объект HttpClient и пытается отправить файл в веб-API.
Поскольку вы делаете это от одного API к другому, вам придется сначала сохранить файл во временном местоположении. Это временное местоположение будет параметром этого метода.
Кроме того, после загрузки вы можете удалить файл, если он не требуется. Этот закрытый метод вы можете вызвать после завершения загрузки файла в ваш первый API.
private async Task<string> UploadFile(string filePath)
{
_logger.LogInformation($"Uploading a text file [{filePath}].");
if (string.IsNullOrWhiteSpace(filePath))
{
throw new ArgumentNullException(nameof(filePath));
}
if (!File.Exists(filePath))
{
throw new FileNotFoundException($"File [{filePath}] not found.");
}
using var form = new MultipartFormDataContent();
using var fileContent = new ByteArrayContent(await File.ReadAllBytesAsync(filePath));
fileContent.Headers.ContentType = MediaTypeHeaderValue.Parse("multipart/form-data");
form.Add(fileContent, "file", Path.GetFileName(filePath));
form.Add(new StringContent("789"), "userId");
form.Add(new StringContent("some comments"), "comment");
form.Add(new StringContent("true"), "isPrimary");
var response = await _httpClient.PostAsync($"{_url}/api/files", form);
response.EnsureSuccessStatusCode();
var responseContent = await response.Content.ReadAsStringAsync();
var result = JsonSerializer.Deserialize<FileUploadResult>(responseContent);
_logger.LogInformation("Uploading is complete.");
return result.Guid;
}
Надеюсь, это поможет вам.