返回文件为$ http.post响应

时间:2018-11-06 12:15:06

标签: javascript python angularjs http flask

我想将一些数据发送回我的 API 并返回一个 .xlsx 文件作为响应,以便客户端可以下载它。使一切崩溃的要求是我必须将 .xlsx 文件创建为临时文件。我一直面临的问题是下载后打开文件时,它已完全损坏。

我正在使用 AngularJS Python Flask

这是服务器端处理

.group:after {
  content: "";
  display: table;
  clear: both;
}

#preview {
  background-color: pink;
}

#preview .group {
  display: flex;
}

.date {
  float: left;
  background-color: orange;
  width: 50px;
  text-align: center;
  padding: 8px 5px;
}

.content {
  flex: 1;
  margin-left: 5px;
}

.content h3 {
  margin: 0;
}

.content p {
  margin: 0;
}

这是请求

<div id="preview">
  <div class="group">
    <div class="date">Apr<br>01</div>
    <div class="content">
      <h3>Blog title</h3>
      <p>Subtitle - should be below title</p>
    </div>
  </div>
  <div class="group">
    <div class="date">Mar<br>01</div>
    <div class="content">
      <h3>Another Blog title</h3>
      <p>Subtitle - should be below title</p>
    </div>
  </div>
</div>

1 个答案:

答案 0 :(得分:0)

似乎数据已损坏,因为浏览器从blob读取并将其写入文件时无法理解数据(内容类型)。

看着您的代码,看来您正在使用两步过程。 1.获取用户输入并提供下载链接 2.在单击下载链接时,您提供他的xlsx文件。 因此,为什么不等到用户单击下载链接,然后提交用户输入的数据,并直接从服务器返回xlxs文件,即可。因此,内容类型将仅由服务器及其浏览器服务器交互处理,而无需ajax /客户端干预来设置内容类型。

第二, 我看到您只是将用户输入转换为xlsx并进行响应。因此,除了使用服务器之外,我们还可以使用sheetjs之类的模块在客户端开发xlsx