Как загрузить файл в 3-й сервис API с помощью приложения ASP.NET MVC 5? - PullRequest
0 голосов
/ 15 мая 2018

У меня есть приложение asp.net mvc 5. Один из моих методов позволяет пользователю загружать файл через html-форму.

Когда пользователь публикует файл, фреймворк связывает данные формы с моделью представления, называемой UploadFileViewModel. У UploadFileViewModel есть свойство UploadedFile с типом HttpPostedFileBase, которое дает мне информацию о загружаемом файле. Как правило, я бы использовал метод SaveAs() в классе HttpPostedFileBase, чтобы сохранить временный файл в постоянном месте на сервере.

Однако в этом случае я не хочу сохранять файл на сервере, вместо этого мне нужно вызвать сторонний API для сохранения файла. API, ожидает 3 параметра

  1. файл (тип файла)
  2. заголовок (тип строки)
  3. recordType (тип string)

Как я могу использовать класс WebClient для загрузки объекта HttpPostedFileBase вместе с параметрами title и recordType в API?

Класс WebClient имеет метод с именем UploadFile, который принимает uri (строку) и fileName (строку). Как я могу использовать этот метод для вызова удаленного API?

1 Ответ

0 голосов
/ 15 мая 2018

Попробуйте с классом HttpClient

 public async Task UploadAsync()
{
    using (HttpClient client = new HttpClient())
    {
        client.BaseAddress = new Uri("http://hello.net/");
        client.DefaultRequestHeaders.Accept.Clear();
        client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

        MultipartFormDataContent content = new MultipartFormDataContent();
        ByteArrayContent fileContent = new ByteArrayContent(System.IO.File.ReadAllBytes("C:/Images/testing.png"));
        fileContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment") { FileName = "testing.png" };
        content.Add(fileContent);

        HttpResponseMessage response = await client.PostAsync("api/SaveFile?title=hello&recordType=audio", content);
        .....
        ....
    }
}
...