Базовая загрузка файлов Angular и Nodejs - PullRequest
0 голосов
/ 26 июня 2019

Может кто-нибудь показать мне пример загрузки базового файла пользователем, используя Node и Angular, пожалуйста.Я понимаю, что это так, но это не работает:

Nodejs:

// Does it matter that it is a post and not a get?
app.post('/some-api', someData, (request, response) => {
    response.download('file/path/mytext.txt');
});

Angular 2 +:

this.httpclient.post<any>('.../some-api', {...data...}).subscribe(response => {
  console.log(response);
  // This throws an error, but even if it doesn't,
  // how do I download the Nodejs `response.download(...) ?`
});

Здесь возможны ответы, но онинастолько сложный, может кто-нибудь просто дать мне супер базовый пример (в основном то, что у меня здесь, но рабочая версия).Пожалуйста, самое простое решение.

Как загрузить файл с Angular2

Угловая загрузка node.js response.sendFile

1 Ответ

1 голос
/ 26 июня 2019

Вот, пожалуйста.

Node.js Сервер:

const express = require("express");
const router = express.Router();

router.post("/experiment/resultML/downloadReport",downloadReport);

const downloadReport = function(req, res) {
  res.sendFile(req.body.filename);
};

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

  import { saveAs } from "file-saver"
  download() {
    let filename = "/Path/to/your/report.pdf";
    this.api.downloadReport(filename).subscribe(
      data => {
        saveAs(data, filename);
      },
      err => {
        alert("Problem while downloading the file.");
        console.error(err);
      }
    );
  }

Угловой сервис:

  public downloadReport(file): Observable<any> {
    // Create url
    let url = `${baseUrl}${"/experiment/resultML/downloadReport"}`;
    var body = { filename: file };

    return this.http.post(url, body, {
      responseType: "blob",
      headers: new HttpHeaders().append("Content-Type", "application/json")
    });
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...