使用Ember app下载文件

时间:2014-11-19 15:27:25

标签: ember.js

我有Ember App(使用Ember-CLI构建)。在后端我有Rails应用程序来处理请求。可以说我的API有以下路线:

/model - 返回模型列表

/model/1 - 返回模型

/model/1/download - 返回文件

如何强制Ember应用程序启动文件下载(使用/download路径)?如何从Ember应用程序中构建文件下载链接?

3 个答案:

答案 0 :(得分:3)

为什么不在模型中为" / model / 1"返回下载的URL路径。然后,您可以轻松地在手柄模板中创建链接,如下所示:

<a href="{{model.download}}" target="_blank">Download File</a>

答案 1 :(得分:3)

  1. 如果您要点击端点并返回文件内容,我相信您需要设置Content Disposition标头。更多详情:Force download through js or query
  2. Content-disposition=attachment; filename=some.file.name

    1. 如果您直接链接到该文件,则可以使用HTML5 download属性;
    2. <a href="{{model.download}}" download>Download File</a>

答案 2 :(得分:1)

不要手动执行任何操作,保持简单并使用ember-cli-file-saver

// models/invoice.js
export default Model.extend({
  invoiceNumber: attr('number'),

  download: memberAction({ path: 'download', type: 'GET', ajaxOptions: { arraybuffer: true } })
});
// in a component
invoiceModel
  .download()
  .then((pdfContent) => this.saveFileAs('invoice.pdf', pdfContent, 'application/pdf'));