AIM: отправлять CSV-файл из nodejs в angular с помощью спецификации и UTF-16 / UCS-2
У меня был GET API в nodejs, который записывал csv-файл в ответ с использованием спецификации, используя fs.writeFileSync(filePath,'\ufeff'+csv,'UCS-2');
.Мой угловой код был
this.http.get(environment.nodeAPIBaseUrl + "/api/downloadCSV", {
headers: headers,
responseType: ResponseContentType.Blob,
search: search //URLSearchParams() for query parameters
})
.subscribe(
(data) => {
var blob = new Blob([data.json()], { type: 'text/csv' });
saveAs(blob, Date.now() + '.csv');
this.loading = false;
},
Приведенный выше код работал правильно, но по некоторым причинам мне пришлось преобразовать API из GET в POST.Мне также пришлось внести небольшие изменения в серверную часть (Nodejs), но строка отправки файла такая же, как в GET API.
После изменения углового кода с GET на POST строка var blob = new Blob([data.json()], { type: 'text/csv' });
начала даватьОшибка JSON, и я понял, что теперь ответ отсутствует в data.json()
вместо data.text()
Хотя я не угловой разработчик и не уверен, что это значит, но теперь я больше не могу писать файл в формате UCS-2.
Обновлен угловой код:
this.http.post(environment.nodeAPIBaseUrl + "/api/downloadCSV", formData, headers)
.subscribe(
(data) => {
var blob = new Blob(['\ufeff',data.text()], { type: 'text/csv;' });
saveAs(blob, Date.now() + '.csv');
this.loading = false;
},
Хотя мне удалось добавить спецификацию, предварительно добавив «\ ufeff» к данным, но UTF-16 по-прежнему остается проблемой.
Любая идея, что не так с моим кодом.