В моем приложении 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 вопросов / ответов по этому предмету, но не могу найти тот, который мне подходит. Кажется, я уже близко. Я не уверен, что здесь отсутствует или неверно.