Загрузка файлов с помощью Angular 2 и .Net Core API - PullRequest
0 голосов
/ 05 сентября 2018

У меня есть WebAPI, у которого есть метод, который создает файл Excel и возвращает его, используя File().

В моем приложении Angular я подписываюсь на ответ и скачиваю файл, используя blob. Но я получаю сообщение об ошибке в консоли браузера, в котором говорится, что он не может проанализировать ответ на JSON.

Почему он хочет проанализировать ответ на JSON? И как решить эту проблему?

Контроллер API:

 [HttpPost]
 public IActionResult QRGenerator(QRCode qrCode)
 {
      string wwwrootPath = _hostingEnvironment.WebRootPath;

       var QrCodes = new List<QRCode>();
       QrCodes.Add(qrCode);
       ExcelGenerator generator = new ExcelGenerator();
       var fileName = generator.GeneratePrintableSheets(QrCodes, wwwrootPath);
       var path = Path.Combine(wwwrootPath, fileName);
       return DownloadFile(fileName, wwwrootPath);   
  }

  public IActionResult DownloadFile(string fileName, string wwwrootPath)
  {
      var path = Path.Combine(wwwrootPath, fileName);
      var content = System.IO.File.ReadAllBytes(path);
      return File(content, "application/vnd.ms-excel", fileName);
   }

Угловой компонент:

  createQR(qrCode: QRCode) {
    let formData: FormData = new FormData();
    this.singleQr.CreateSingleQR(formData).subscribe(data => {
      this.downloadFile(data);
      console.log(data);
    });
  }

 downloadFile(data: any){
   var blob = new Blob([data], { type: 'application/vnd.ms-excel' });
   var url= window.URL.createObjectURL(blob);
   window.open(url);
 }

А для завершения ради Службы Англичан

 CreateSingleQR(formdata: FormData) {
    return this.http.post(this.qrUrl, formdata);
  }

Browser Error

1 Ответ

0 голосов
/ 06 сентября 2018

Вы должны сообщить Angular, что ответ не JSON, поэтому он не будет пытаться его проанализировать. Попробуйте изменить код CreateSingleQR на:

CreateSingleQR(formdata: FormData) {
    return this.http.post(this.qrUrl, formdata, { responseType: ResponseContentType.Blob } );
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...