通过aurelia-http-client下载Excel文件

时间:2016-08-04 10:49:43

标签: aurelia

我正在处理一项任务,我必须以xlsx格式下载报告。报告文件是从服务器成功生成的,并在客户端(aurelia-http-client)收到,但我不知道如何进一步下载。

3 个答案:

答案 0 :(得分:1)

我会在这个答案https://stackoverflow.com/a/30270714/6677648

中做一些事情

......最终会像Aurelia中的response interceptor一样:

        .withResponseType('blob')
        .withInterceptor({
            response(message) {
                var defaultFileName = "default.txt";
                var disposition = message.headers.headers['content-disposition']?message.headers.headers['content-disposition']:message.headers.headers['Content-Disposition'];
                if (disposition) {
                    var match = disposition.match(/.*filename=\"?([^;\"]+)\"?.*/);
                    if (match[1])
                        defaultFileName = match[1];
                }
                defaultFileName = defaultFileName.replace(/[<>:"\/\\|?*]+/g, '_');
                if (navigator.msSaveBlob)
                    return navigator.msSaveBlob(message.response, defaultFileName);
                var blobUrl = window.URL.createObjectURL(message.response);
                var anchor = document.createElement('a');
                anchor.download = defaultFileName;
                anchor.href = blobUrl;
                document.body.appendChild(anchor);
                anchor.click();
                document.body.removeChild(anchor);
            }
        })

答案 1 :(得分:1)

我使用了downloadjs库。安装库,将其添加到aurelia.json,然后添加

import * as download from 'downloadjs'

然后按如下方式编写代码:

this.httpClient.fetch('your/url/here')
  .then((response: Response) => response.blob())
  .then((blob: Blob) => download(blob, 'filename.extension', 'mime type of the file'));

瞧,您的文件将被下载。

答案 2 :(得分:0)

Helo与.withInterceptor()在响应中生成错误,更改它以修复无响应中的错误并同时卸载多个文件。

getLogsCsv(param) {
    this.http.configure(config => {
        config
            .withResponseType('blob');
    });
    return this.http.get("/admin/api/logs" + param)
        .then(response => {
            if (response.statusCode == 200) {
                var defaultFileName = "FileName.csv";
                var blobUrl = window.URL.createObjectURL(response.response);
                var anchor = document.createElement('a');
                anchor.download = defaultFileName;
                anchor.href = blobUrl;
                document.body.appendChild(anchor);
                anchor.click();
                document.body.removeChild(anchor);
                return response.content;
            } else {
                console.log('response was not ok.');
                console.log(response);
            }
        })
        .catch(error => {
            console.log(error);
        });
}