【发布时间】:2015-11-20 08:39:35
【问题描述】:
以下是相关代码:
控制器:
public ActionResult APIDownloadCSV()
{
var filename = Server.MapPath("~/xxx/test.csv");
byte[] content = System.IO.File.ReadAllBytes(filename);
return File(content, "text/csv", "test.csv");
}
Javascript:
var fetchCSV = function () {
return postDownloadCsv().then(function (data) {
var hiddenElement = document.createElement("a");
hiddenElement.href = "data:text/csv;charset=utf-8," + data;
hiddenElement.target = "_blank";
hiddenElement.download = "test.csv";
hiddenElement.click();
hiddenElement.remove();
});
}
postDownloadCSV 只是一个简单的$http.post 函数到正确的 URL。
问题:
当我使用上述代码时,文件以 CSV 格式下载,但仅以单个连续字符串的形式返回。但是,当我直接将 URL 发布到浏览器的地址栏时,正在下载的文件被正确解析。我尝试过操纵标头,以便我请求text/csv,但它不起作用。由于某些原因,我不能在客户端使用解析器来解决这个问题(反正我不想这样做。文件在服务器上完全没问题。只需要下载它。)
我想问题出在客户端,因为我可以通过 URL 下载文件,但是在哪里?我的$http.post 有什么问题吗?
【问题讨论】:
标签: javascript .net angularjs