我想将一些数据发送回我的 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>
答案 0 :(得分:0)
似乎数据已损坏,因为浏览器从blob读取并将其写入文件时无法理解数据(内容类型)。
看着您的代码,看来您正在使用两步过程。 1.获取用户输入并提供下载链接 2.在单击下载链接时,您提供他的xlsx文件。 因此,为什么不等到用户单击下载链接,然后提交用户输入的数据,并直接从服务器返回xlxs文件,即可。因此,内容类型将仅由服务器及其浏览器服务器交互处理,而无需ajax /客户端干预来设置内容类型。
第二, 我看到您只是将用户输入转换为xlsx并进行响应。因此,除了使用服务器之外,我们还可以使用sheetjs之类的模块在客户端开发xlsx