Загрузить файл ИЛИ отправить результат json за один вызов API с помощью axios и ASP.Net core 2.2? - PullRequest
0 голосов
/ 03 ноября 2019

Возможно ли (или желательно) иметь одну конечную точку API, которая будет возвращать объект json с данными ИЛИ загружать файл? Я использую axios и vue.js в пользовательском интерфейсе и Asp.Net Core 2.2 в API. Подробности о том, почему я хочу это сделать:

Я генерирую файл с сервера по запросу. В «счастливом пути» эти файлы загружаются в SharePoint с сервера, а полученный URL-адрес документа отправляется обратно клиенту. Клиент прочитает этот URL и получит его для загрузки и извлечет файл. Если документ не может быть загружен в SharePoint, я все же хотел бы отправить файл клиенту для прямой загрузки / сохранения. Я бы предпочел не делать это в двух запросах (получить результаты, а затем либо загрузить через URL-адрес SharePoint, либо запросить документ с сервера), поскольку я не хочу сохранять этот документ между запросами. Я могу использовать Axios для записи байтового массива в файл, я просто не знаю, как опционально прочитать ответ для URL документа, или просто записать поток байтов в виде файла.

1 Ответ

0 голосов
/ 04 ноября 2019

Для возврата различных типов ответов вы можете попробовать вернуть IActionResult вместо определенного типа ответа.

Попробуйте что-то вроде

    [HttpPost]
    public IActionResult Upload(int id, IFormFile file)
    {
        if (id == 1)
        {
            return Ok("file path");
        }
        else
        {
            return File(file.OpenReadStream(), file.ContentType);
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...