Я хочу разрешить посетителю загружать CSV-файл с сервера с помощью Angular 7.

Я видел несколько веб-сайтов, но большинство из них объясняют динамическое создание CSV-файла из данных и использование создания больших двоичных объектов, а не загрузку папки. Но у меня уже есть файл CSV на сервере, и я хочу загрузить его со стороны сервера на сторону клиента.

0
Elvis Montezuma 25 Окт 2019 в 03:22
Просто сделайте запрос AJAX...
 – 
danielperaza
25 Окт 2019 в 03:24
Спасибо, Даниэль. У вас есть пример?
 – 
Elvis Montezuma
25 Окт 2019 в 03:37

1 ответ

Для сохранения файла вы можете использовать такой пакет, как file-saver:

npm install file-saver --save
import { saveAs } from 'file-saver/FileSaver';

Ваша функция может быть такой:

downloadCSV(data: any) {
    const blobData = new Blob([data], { type: 'text/csv' });
    const url = window.URL.createObjectURL(blobData);
    saveAs(blobData, "file_name.csv");
    return window.open(url);
}

Чтобы загрузить файл, используйте arraybuffer::

getFile() {
    this.httpClient.get(url, {responseType: 'arraybuffer',headers:headers})
    .subscribe(
        (data) => this.downloadCSV(data), 
        (error) => // Handle error)
    );
}
0
Banki Louis 25 Окт 2019 в 04:31
Похоже, дело в сервисе, который скачивает файл this.http.get... У меня 3 разных файла, два из них скачиваются нормально, третий нет. Ответ об ошибке HTTP для (неизвестный URL): 0 Неизвестная ошибка»
 – 
Elvis Montezuma
25 Окт 2019 в 08:18