Загрузите большие файлы, используя React и AspnetCore, чтобы открыть браузер с сохранением (заголовки) - PullRequest
0 голосов
/ 06 ноября 2019

Я борюсь с проблемой загрузки больших файлов с использованием веб-API в asp net core и веб-интерфейса в React.

Когда файл начинает загружаться, он не показывает диалоговое окно браузера (Сохранить как файлДиалоговое окно), пока он не загрузит файл в память, а затем даст возможность сохранить его.

Когда размер файла больше, например, 200 МБ, пользователь не может выбрать, где сохранить файл, прежде чем начать его загрузку, и увидетьпрогресс загрузки во вкладке браузера.

Используется с веб-интерфейсом реагирования и веб-API в ядре aspnet. Прочитав несколько часов, я не смог найти решение. Я не могу использовать ссылку для загрузки файла, потому что мне нужно пройти аутентификацию с помощью токена.

Может быть, мне не хватает какой-либо конфигурации или настройки в моем бэкэнде / интерфейсе?

Любые предложения или советыБуду очень признателен.

Метод моего веб-API:

        [HttpGet("{fileName}")]
        [Authorize]
        public IActionResult GetFile(string fileName)
        {

            Stream stream = _fileManager.GetFileContent(fileName);
            // Response...
            ContentDisposition cd = new ContentDisposition("attachment")
            {
                FileName = fileName,
                // DispositionType = "attachment; filename=" + fileName + ";",
                Inline = false // false = prompt the user for downloading;  true = browser to try to show the file inline
            };

            Response.Headers.Add(HeaderNames.ContentDisposition, cd.ToString());

            return File(stream, MediaTypeNames.Application.Zip);
        }

Интерфейс использует axios, чтобы получить его.

async function Download() {
  var authToken = await authService.Token();

  console.log("calling request", process.env.REACT_APP_API_URL + "files/GetFile/iPro.zip");
  if (authToken) {
    BioAxios.get("/files/GetFile/file.zip", {
      responseType: "blob",

      headers: {
        Authorization: "Bearer ".concat(authToken.access_token),
        "Content-Type": "application/zip"
      }
    }).then(response => {
      // Log somewhat to show that the browser actually exposes the custom HTTP header
      console.log("Full Response", response);

      // Let the user save the file.
      FileSaver.saveAs(response.data, "file.zip");
    });
  }
}

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