CSV文件作为单个字符串返回
CSV file being returned as a single string
以下是相关代码:
控制器:
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
只是对正确URL的一个简单的单行$http.post
函数。
问题:
当我使用上面的代码时,文件以CSV的形式下载,但仅以单个连续字符串的形式返回。然而,当我直接将URL发布到浏览器的位置栏时,下载的文件会被正确解析。我已经尝试过操作头以便请求text/csv
,但它不起作用。出于某种原因,我不能在客户端使用解析器来解决这个问题(无论如何,我不想这样做。文件在服务器上完全可以。只需要下载它。)
我想问题出在客户端,因为我可以通过URL下载文件,但在哪里?我的$http.post
有什么问题吗?
在设置链接之前尝试对其href进行编码。
hiddenElement.href = encodeURI("data:text/csv;charset=utf-8," + data);
工作js小提琴:http://jsfiddle.net/f6enw0L6/
相关文章:
- PHP strtotime()为JavaScript日期字符串返回false
- 如何将表单数据传递给PHP并将json字符串返回给Javascript
- 解析JSON字符串返回未定义的结果
- Javascript:解析csv中的字符串返回NaN(不是数字)
- 使用$se.trustAsHtml呈现字符串返回未定义的结果
- 将字符串返回到类型为“0”的输出字段;数字“;针对用户错误javascript
- 如何使用一些变量参数从javascript函数调用 asp.net C#函数并从C#函数获取字符串返回
- 函数:根据字符串中是否存在子字符串返回 True/False
- 如何使用 JavaScript 区分布尔值和字符串返回值
- 将 React 的方法 'return' 作为字符串返回
- 调用不带括号的函数会将整个函数作为字符串返回
- 如何在 ajax 调用中接受来自控制器的字符串返回
- Jquery - 匹配动态日期字符串返回使用长度的匹配量
- json_encode使用 jquery.get() 发布数据时将数组作为字符串返回
- 缓冲区中的nodejs解码字符串返回多行字符串
- 如何将关联数组键作为字符串返回
- python's mechanize和forms:javascript字符串返回
- 将呈现的ejs视图作为服务内的html字符串返回
- CSV文件作为单个字符串返回
- jQuery中的HTML字符串返回错误