使用vue资源下载文件会破坏.xls文件输出格式

时间:2019-03-08 10:33:30

标签: vue.js

我正在尝试通过API下载.xls文件,但输出文件格式不正确,它看起来像这样: enter image description here

这是我的代码:

exportData: function() {
  let items_ids = [];
  this.$refs['vue-items-reports-table'].selectedRows.forEach(function (arrayItem) {
    var x = arrayItem.id;
    items_ids.push(arrayItem.id);
  });
  this.$http.get('/api/items-reports/', {'params': {'file_format': this.export_format, 'items': items_ids.toString()}}).then(function(response){
    let blob = new Blob([response.data], {type:response.headers.get('content-type')});
    filename = response.headers.map['content-disposition'][0].split('filename=')[1];
    let link = document.createElement('a');
    link.href = window.URL.createObjectURL(blob);
    link.download = filename.replace('"', '').replace('"', '');
    link.click();
  })
}

当我将端点URL直接放在浏览器中时,文件格式是正确的,因此Vue部分存在问题。

1 个答案:

答案 0 :(得分:0)

我假设您正在使用vue-resource进行HTTP调用。

尝试使用reponse.blob()(它返回一个承诺),并将该结果用于下载。