使用POST请求从不同来源下载文件

时间:2016-01-06 08:14:23

标签: jquery cross-domain

我尝试从不同于我的UI服务(不同域)的服务提示下载请求 我正在尝试使用像

这样的东西
$.post(url, {param1: 'param1val', param2: 'param2val'})  

服务器返回带有文件标题的CSV,但是我收到的回复为CSV文本,并且不确定如何(如果可以)将其保存为文件。< / p>

澄清可能会有所帮助:
我对服务器的回复是

Future(Ok.chunked(rowEnumerator.andThen(Enumerator.eof))
  .withHeaders(("Content-Description", "File Transfer"), ("Content-Transfer-Encoding", "binary"), ("Access-Control-Allow-Origin","*"))
  .as("text/csv").withHeaders(CONTENT_DISPOSITION -> s"attachment; filename=resp.csv", CONTENT_TYPE->"application/x-download"))

1 个答案:

答案 0 :(得分:0)

似乎问题是$ .post正在使用AJAX,看起来不可能以这种方式下载文件。
解决方案是在文档正文上动态创建一个表单元素,其属性对应于我尝试在$ .post中发送的数据。

var form = document.createElement("form");
form.setAttribute(...); // method, action  

// for each data element for POST request
var field = document.createElement("input");
field.setAttribute(...); // type(hidden), key, value
form.appendChild(field);  

document.body.appendChild(form)
form.submit()