无法将数据流从 AJAX 响应转换为 CSV 文件
Posted
技术标签:
【中文标题】无法将数据流从 AJAX 响应转换为 CSV 文件【英文标题】:Unable to convert data stream from AJAX response to CSV file 【发布时间】:2021-04-07 17:43:02 【问题描述】:我正在尝试将 ajax 响应转换为 csv 文件,该响应是带有一些垃圾字符(可能是 blob 或字节流或字节数组不确定)的数据流。在下载的文件中,我也得到了相同的垃圾数据。
$.ajax(
url: requestUrl,
type: "POST",
async: false,
data: data_request_clientside,
contentType: 'application/json;charset=utf-8',
dataType: 'text',
success: function (response)
var binary = "";
var responseTextLen = response.length;
for ( i = 0; i < responseTextLen; i++ )
binary += String.fromCharCode(response.charCodeAt(i) & 255);
var a = document.createElement('a');
a.href = "data:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml;base64," + btoa(binary);
a.download = 'workingStuff.csv';
document.body.appendChild(a);
a.click();
a.remove();
,
error: function (error)
console.log("Something went wrong", error);
);
【问题讨论】:
【参考方案1】: var blob = new Blob([csvString]);
if (window.navigator.msSaveOrOpenBlob) // IE hack; see http://msdn.microsoft.com/en-us/library/ie/hh779016.aspx
window.navigator.msSaveBlob(blob, "filename.csv");
else
var a = window.document.createElement("a");
a.href = window.URL.createObjectURL(blob, type: "text/plain");
a.download = "filename.csv";
document.body.appendChild(a);
a.click(); // IE: "Access is denied"; see: https://connect.microsoft.com/IE/feedback/details/797361/ie-10-treats-blob-url-as-cross-origin-and-denies-access
document.body.removeChild(a);
只需将代码放在成功函数下,根据需要稍作修改即可,尚未测试
【讨论】:
感谢您的帮助!!我已经试过了,这也只是提供垃圾数据......我仍在努力,只是知道响应是编码数据 - 传输编码分块。试图找到相同的解码。以上是关于无法将数据流从 AJAX 响应转换为 CSV 文件的主要内容,如果未能解决你的问题,请参考以下文章
有没有办法使用 BeautifulSoup 将数据从列表正确转换为 CSV 文件?
pandas CSV 文件读取不会将数据类型从 object 转换为 int
将 d3.csv 方法转换为 d3.csv.parse 方法
如何将导入 python 的数据从 csv 文件转换为时间序列?