Неверный почтовый файл Angular Post response (Back-end = .Net C #) - PullRequest
0 голосов
/ 09 января 2019

В моем приложении Angular 6 пользователь отправляет форму, а затем отправляет ее в виде запроса POST данных JSON в мой .Net API. API преобразует эти данные в XML-файл, сжимает их (zip) и отправляет zip обратно в Angular.

Пока все выглядит так, как будто он работает, однако полученный мной почтовый zip-файл неверно назван и не всегда одинаков. Это тот же формат, но разные символы каждый раз, когда он загружается (например, f84eff66-e2a1-4286-a7a4-c23ded8e0e29.zip). Более того, при попытке разархивировать, Windows говорит, что это неверно.

Угловой 6 код

component.ts

this.dataService.exportSettings(this.settings)
  .subscribe(
    response => {
      console.log(response);
      const blob = new Blob([response], {
        type: 'application/zip'
      });
      const url = window.URL.createObjectURL(blob);
      window.open(url);
    },
    (error) => console.log(error)
  );

dataService.ts

exportSettings(settings: settings) {
  return this.http.post('/api/tools/export', settings, { responseType: 'blob' });
}

.Net код

[HttpPost("export")]
public async Task<HttpResponseMessage> Export([FromBody] SettingsViewModel vm)
    {
        if (ModelState.IsValid)
        {
            string assignments = ConvertAssignments(vm.Assignments);

            using (var zip = new ZipFile())
            {
                zip.AddEntry("dropbox_d2l.xml", assignments);
                zip.Save("tools.zip");
                return ZipContentResult(zip);
            }                
        }
        return new HttpResponseMessage(HttpStatusCode.BadRequest);
    }

Я посмотрел несколько SO вопросов / ответов по этому предмету, но не могу найти тот, который мне подходит. Кажется, я уже близко. Я не уверен, что здесь отсутствует или неверно.

...